Skip to main content

Synfire and cloud computers

Posted

Hi. Is it possible to host audio engines in cloud computer instances? does synfire work with cloud pcs or only with computers on the local network?


Sat, 2017-09-09 - 11:18 Permalink

Although you can start as many Audio Engines anywhere you want, as of now, they still need local audio hardware for output.

Sending audio back over the network and merging it in synch would add a lot to overall latency and has not worked well yet, although it is possible. Vienna Ensemble does it, for example. We didn't yet see a convincing reason to dedicate much development time to this. Big scale distributed audio hosting is not a priority for Synfire. You would rather do that with your DAW for final production.

Sat, 2017-09-09 - 13:06 Permalink

Agreed. And besides Vienna Ensemble Pro there isn't really a good and stable solution to this as of right now in the audio sector.

 

Also keep in mind that Synfire is utilizing just a single core from your CPU anyways (still no multi-threading capabilities) so cloud distribution with just a single core processing per system would be a very weird choice anyways when talking about efficiency. 

 

Best,

tL.

 

Sun, 2017-09-17 - 12:55 Permalink

Tried it last night and got it working. Got a paperspace cloud account, set up a virtual machine with windows, installed the 64bit audio engine, entered the external IP address for my router into the engine with the port number appended, and set my router firewall to forward the port that synfire uses to my synfire home pc.

I could then control the cloud-based synfire engine using my home synfire installation, using test VSTIs that I set up on the cloud machine.

Obviously, the blocker here is the audio, lack of ASIO audio etc. I could get some high latency audio through the cloud-based audio driver (Pulseaudio).

Clearly we would need the audio engine to send audio over network, but then this could be a really powerful system given scalability of cloud machines for the task at hand.

Vienna ensemble is quite pricey and requires a physical USB dongle plugged in to the slave, which rules out cloud machine use. Business opportunity here Andre?

Sat, 2017-09-09 - 14:32 Permalink

Nice experiment! As interesting as this topic is, keeping up with the quirks of plugin hosting alone is already distraction enough. We need to focus primarily on the core features of Synfire: Enabling the user to build compositions and songs from the ground up. You don't usually need that many instruments for that. The most impressive and memorable music, regardless of genre, often consists of no more than five or so parts.

Sat, 2017-09-09 - 16:01 Permalink

We need to focus primarily on the core features of Synfire

I fully agree with that. Please don't make Synfire a competitor to VEP.

Synfire's core feature is composing and arranging music, not hosting dozens of plug-ins for networked access.

Sat, 2017-09-09 - 17:44 Permalink

No, don't make Synfire a VEpro competitor. But there is potential and market need for a large sample library hosting system, and the audio engine offers a lot  of potential to build on. Cognitone could find a willing collaborator to develop this as a separate product, which could speak to not just Synfire, but to DAWs. Sample libraries are getting bigger, cloud and net technology is getting cheaper.

My goal here was to see if there are ways to have all my sample libraries loaded, ready to play and already on, taking away the need to load samples and presets. I would still be using just 5-6 instruments in the composition. 

Sat, 2017-09-09 - 21:44 Permalink

Quite a few DAWs already offer this kind of distributed plugin hosting. Logic X has its nodes, Reaper has ReaMote and VEP as a standalone product isn't expensive either.

We'd rather look into multi-CPU hosting, as soon as tools for that become available. That can easily quadruple the hosting capacity of an Audio Engine.

Sun, 2017-09-10 - 16:37 Permalink

Sounds like a good plan. ReaMote, VEP don't allow connecting to vst's on a cloud based machine as far as I can tell. I think the closest to Synfire's ability to do this is DawConnect which bestservice use to audition their sample libraries. 

EDIT: It works! Using the Reastream plugin (free from Cockos), I can get audio working at low (usable) latency. I can now use the virtual machine instance to host an Engine, managed from my Synfire installation. But 2 problems: issues with timing of notes when playing back (probably because using internet packets), and for some strange reason Synfire doesn't allow me to play midi live (using my midi keyboard) to VSTs hosted on the remote Engine when the same VST is on the local Engine.

Sun, 2017-09-10 - 17:30 Permalink

Cool.

issues with timing of notes

TCP/IP is fast enough. It's the diffferent computers that will never start playback at exactly the same time. For this to work as expected, Synfire (the receiving end) would need to collect and buffer streams from all engines and merge them in synch. This might add 40 or so milliseconds of buffer time to the playback, but the music in itself would be in perfect synch. Bad for recording, though.

for some strange reason Synfire doesn't allow me to play midi live (using my midi keyboard) to VSTs hosted on the remote Engine

Just disable the "Use Audio Engine for MIDI Input" box. This will make Synfire listen to MIDI input on your home computer.

Mon, 2017-09-11 - 23:11 Permalink

Thanks - disabling Use Audio Engine for Midi Input box on the Inputs screen allowed me to play the remote vsts again.

However, with this setting for some reason, all notes are positioned about 2 3/4 bars away from the starting point when recorded?

Tue, 2017-09-12 - 08:01 Permalink

That's the latency in your network, all converters and sound bridges included. By the time you hear the metronome click, the playhead has advanced to the second bar already out there in the cloud ;-)

As said, this is interesting to play with, but to make it really usable, significant investment in R&D would be required.

Sun, 2017-09-17 - 10:52 Permalink

I don't really get this. It doesn't take long for me to hear the metronome click after clicking record, maybe 200ms. Yet the play head advance would take 6-7 seconds at least?

EDIT: I must have changed some setting. It seems to record from the start now. Wierd. It's not perfectly in sync though but as outlined above that's to be expected. EDIT again: and now it's starting one bar late. Seems to vary depending on its mood ;(

Sun, 2017-09-17 - 13:41 Permalink

That's because audio streams returning to your home pc are not synchronized with the home pc clock. Results should be pretty random.

Tue, 2017-09-19 - 21:52 Permalink

One final update. Tried using VEPro demo, and could only use it on the cloud machine with a very high max latency 8012ms (and even then with frequent cut outs), which rules out playing live but is potentially usable to some extent when not writing live.

On the other hand, I could use 256ms with Synfire engine playing live. If Synfire recording didn't introduce the delay as explained above, then Synfire engine would be clearly the best choice (perhaps only choice) for network sample library hosting over internet at the moment.

That's it - my experiments are done. Over to someone else now to make best of the developing technologies here.

Tue, 2017-09-19 - 22:45 Permalink

I could use 256ms with Synfire engine playing live.

Only because there is no synch ;-) If Synfire was to wait for all streams to come in and merge them safely, we'd have a much bigger overall latency.