apohl79 / audiogridder

DSP servers using general purpose computers and networks
https://audiogridder.com
MIT License
757 stars 78 forks source link

(Request) Linux Server plans?! #214

Open Comettii opened 3 years ago

Comettii commented 3 years ago

First of all, congratulations on your excellent work. This has potential to be one of the main tools in the market, mainly because it is free... I will donate very soon ;)

I wonder if there are any plans to develop the server for linux? I ask because I have an Android TV Box here with 4GB of RAM, of low cost, but with a very interesting processor (Cortex A53 quadcore), that if it worked, it would be fantastic for those who cannot invest a lot. I will install some distribution on it (like Ubuntu) and I am available for any test you want to do, if you intend to develop the server for Linux.

Thank you very much and keep breaking everything!

jaacMusic commented 3 years ago

There is a Linux version in the release section. I don't think it would work on your Android TV for either plugin or server as that is a ARM CPU. I think the Linux version it designed to run on x64 CPUs.

apohl79 commented 3 years ago

The linux version is client only right now. But the question for linux server support came up before. So I will have a look at this at some point. Thanks for supporting the project!

rcrath commented 3 years ago

I'm moving my discussion from #2 ... I got the server to create a makefile for linux, but when I ran make I got the following error. I can zip up the debug files that got generated if needed. I am lost as to what to do to debug this though. Any help appreciated.

rich[LinuxMakefile]$ make
Compiling Logger.cpp
Compiling mDNS.cpp
Compiling mDNSConnector.cpp
Compiling Metrics.cpp
Compiling MiniDump.cpp
Compiling Tracer.cpp
Compiling App.cpp
In file included from ../../Source/AudioWorker.hpp:15,
                 from ../../Source/Worker.hpp:14,
                 from ../../Source/Server.hpp:15,
                 from ../../Source/App.hpp:14,
                 from ../../Source/App.cpp:8:
../../../Common/Source/Message.hpp: In member function ‘bool e47::AudioMessage::sendToServer(juce::StreamingSocket*, juce::AudioBuffer<FloatType>&, juce::MidiBuffer&, juce::AudioPlayHead::CurrentPositionInfo&, int, int)’:
../../../Common/Source/Message.hpp:235:37: error: ‘class juce::MidiBuffer’ has no member named ‘begin’
  235 |             for (auto midiIt = midi.begin(); midiIt != midi.end(); midiIt++) {
      |                                     ^~~~~
../../../Common/Source/Message.hpp:235:61: error: ‘class juce::MidiBuffer’ has no member named ‘end’
  235 |             for (auto midiIt = midi.begin(); midiIt != midi.end(); midiIt++) {
      |                                                             ^~~
../../../Common/Source/Message.hpp: In member function ‘bool e47::AudioMessage::sendToClient(juce::StreamingSocket*, juce::AudioBuffer<FloatType>&, juce::MidiBuffer&, int, int)’:
../../../Common/Source/Message.hpp:271:37: error: ‘class juce::MidiBuffer’ has no member named ‘begin’
  271 |             for (auto midiIt = midi.begin(); midiIt != midi.end(); midiIt++) {
      |                                     ^~~~~
../../../Common/Source/Message.hpp:271:61: error: ‘class juce::MidiBuffer’ has no member named ‘end’
  271 |             for (auto midiIt = midi.begin(); midiIt != midi.end(); midiIt++) {
      |                                                             ^~~
make: *** [Makefile:152: build/intermediate/Debug/App_e5d18802.o] Error 1
apohl79 commented 3 years ago

Are you using JUCE6?

On 15. Nov 2020, at 05:02, Rich Rath notifications@github.com wrote:

 I'm moving my discussion from #2 ... I got the server to create a makefile for linux, but when I ran make I got the following error. I can zip up the debug files that got generated if needed. I am lost as to what to do to debug this though. Any help appreciated.

rich[LinuxMakefile]$ make Compiling Logger.cpp Compiling mDNS.cpp Compiling mDNSConnector.cpp Compiling Metrics.cpp Compiling MiniDump.cpp Compiling Tracer.cpp Compiling App.cpp In file included from ../../Source/AudioWorker.hpp:15, from ../../Source/Worker.hpp:14, from ../../Source/Server.hpp:15, from ../../Source/App.hpp:14, from ../../Source/App.cpp:8: ../../../Common/Source/Message.hpp: In member function ‘bool e47::AudioMessage::sendToServer(juce::StreamingSocket, juce::AudioBuffer&, juce::MidiBuffer&, juce::AudioPlayHead::CurrentPositionInfo&, int, int)’: ../../../Common/Source/Message.hpp:235:37: error: ‘class juce::MidiBuffer’ has no member named ‘begin’ 235 | for (auto midiIt = midi.begin(); midiIt != midi.end(); midiIt++) { | ^~~~~ ../../../Common/Source/Message.hpp:235:61: error: ‘class juce::MidiBuffer’ has no member named ‘end’ 235 | for (auto midiIt = midi.begin(); midiIt != midi.end(); midiIt++) { | ^~~ ../../../Common/Source/Message.hpp: In member function ‘bool e47::AudioMessage::sendToClient(juce::StreamingSocket, juce::AudioBuffer&, juce::MidiBuffer&, int, int)’: ../../../Common/Source/Message.hpp:271:37: error: ‘class juce::MidiBuffer’ has no member named ‘begin’ 271 | for (auto midiIt = midi.begin(); midiIt != midi.end(); midiIt++) { | ^~~~~ ../../../Common/Source/Message.hpp:271:61: error: ‘class juce::MidiBuffer’ has no member named ‘end’ 271 | for (auto midiIt = midi.begin(); midiIt != midi.end(); midiIt++) { | ^~~ make: *** [Makefile:152: build/intermediate/Debug/App_e5d18802.o] Error 1 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

rcrath commented 3 years ago

5.47. Just noticed the package is out of date since the release of 6 on the Arch User repo so will try to upgrade via outside the package system. I am assuming from the question 5.47 won't work.

rcrath commented 3 years ago

got 6 installed, now make is giving the following error message. Will google later. got to make dinner.

/usr/bin/ld: /home/rich/Dropbox/audio/git/audiogridder (another copy)/Server/Builds/LinuxMakefile/../../Source/ScreenRecorder.cpp:469: undefined reference to `av_packet_unref'
collect2: error: ld returned 1 exit status
make: *** [Makefile:117: build/AudioGridderServer] Error 1
rcrath commented 3 years ago

nope strikeout on google...seems to be a problem with the ffmpeg version, but I have not been able to figure out a fix yet. Here is my version info and the included libraries:

ffmpeg verson 4.3.1
libavutil      56. 51.100
libavcodec     58. 91.100
libavformat    58. 45.100
libavdevice    58. 10.100
libavfilter     7. 85.100
libswscale      5.  7.100
libswresample   3.  7.100
libpostproc    55.  7.100
CrossGridder commented 2 years ago

With CrossGridder 1.2 you can already have a taste of what is to have a server in linux that doesn't even pass from a virtual machine.

MushPsykotik commented 2 years ago

I request this too, also, if it would be possible to run it on CLI only it can be really cool. (I dont want DE who take precious ressources on server side) . With scriptable configuration it can be really cool. The tool called linvst can be useful in this case, to support VST2 from Windows. Cheers !

custa1200 commented 2 years ago

Isn't VST2 dead tech?

MushPsykotik commented 2 years ago

Isn't VST2 dead tech?

I still use some (old) plugins using this format like the first Predator that i owned many years ago but still awesome

rcrath commented 2 years ago

@custa1200 vst2=Zombie tech! Steinberg keeps killing it in order to make ppl use buggy feature-loss, crash-prone vst3, but it keeps getting back up again...there are a number of really useful new and old plugins that still only run vst2, although vst3 is getting better. (puremagnetik plugs are the most fun example) My main problem is the inability to organize plugs in a useful way like I can in vst2.

AtmanActive commented 2 years ago

My main problem is the inability to organize plugs in a useful way like I can in vst2.

@rcrath : can you please elaborate on this? I'm using VST2/VST3 side by side and I have no trouble building VST folder tree to organize them in a useful way, given that Reaper respects and shows VST folder structure as intended. But of course, I'm using portable VST plugins exclusively.

rcrath commented 2 years ago

@AtmanActive May be a thread hijack, so I'll keep it brief. In vst 2 you can install to any folder you like. Since like 2008 or so I have put all my vst 2 folders in a bespoke folder hierarchy that allows me to get to what I want quickly (i.e., amp sim, delay&reverb,Dynamics,distortion,synths,drums&samplers, etc that works for me. VST 3 installs where it will with many installers not giving a choice, and if I move the folders around, vst 3 dos not follow my folder structure in whichever host I use, organizing the daw by dev name instead. as far as I can tell and vst3s that rely on files outside the vst3 folder get borked by moving them. It is not really an issue for this thread other than to say there are valid reasons including this one and the others mentioned, for not giving up on vst2 just yet.

DC-codes commented 1 year ago

The linux version is client only right now. But the question for linux server support came up before. So I will have a look at this at some point. Thanks for supporting the project!

I made it (https://github.com/DC-codes/audiogridder, linuxbuild branch) compile on linux (xubuntu). it runs and connects to vst client as well (tested with reaper). however its functionality is not fine. mainly with adding /manipulating plugin and tray icon. once that rectified, the dummy functionality for screen capturing and load factor will be added.

ben-pelletier commented 6 months ago

@apohl79 Is there anything other than the "screen capturing code and keyboard/mouse support" issue you mention in https://github.com/apohl79/audiogridder/discussions/487#discussioncomment-594584 that comes to mind that would be a blocker for a linux server? Should be able to get an x working for this or even wayland, I initially was looking at the src to add hardware acceleration for encoding for the ffmpeg stream when I realized their wasn't linux server support at the moment. I also see a path where the client could potentially use moonlight embedded to the plugin to connect to a linux sunshine server to handle both input and stream which could also leverage hwacell from gpu's in the ffmpeg lib... Open to a PR on any of this?

apohl79 commented 6 months ago

Some basic linux server support is present including mouse/kb and screen capturing support. Any PR is welcome! Cheers!