Online Co-op Tracking

In the style of OpenCanvas, or that drawing board thing on MSN Messenger, but with tracking.

So far, no trackers, or even any music apps period, have ever done this. I’m not sure many other people had the idea though.

Here’s the idea though. Someone starts up a new project, then connects online with some function in the toolbar. Shows the IP, and you can pick an alias. Then you can give your IP out to people on the forum or on #renoise IRC, and they connect to that IP, bringing them to the host’s project. The samples would be streamed out to the other users by whoever loaded one into renoise, but of course they’d be cached client-side so as to not waste bandwidth. VST parameters, if two or more users share the same synth, could also be streamed around. Then if people all leave, the host or other people can work on them later, offline. I think we have the technology to pull this off in an efficient and streamlined manner by now. What do you think?

i’m in favor/not proficient in any programming language

Actually, Impulse Tracker has done this. It’s not a very effective implementation of networked tracking, but it was great fun back in the day!

oh

Bringing up such an old topic here. But yeah this idea… I was thinking about something along the lines of this on my walk today…

Everything being in the cloud nowadays, it just makes sense to have people work on something in the cloud together. I’d think it would be a good feature that would really set Renoise apart, since the only thing a bit more pro out there right now, that does something like this, is probably this ohm studio thing I guess (and i haven’t tried that one yet, but I suppose it only works with samples / recordings being synced up).

How this could work, is to not make it all real time, which would be a mess with different studio setups and whatever. But I think you can let everyone work on a local copy on their machine that syncs up underwater, and then with some additional features you may be able to overcome any problem with features like plugins. large samples and midi hardware.

An example of how this could work broken down step by step:

  • One hosts a renoise project (loaded or new)

  • A client can connect. Each client connecting gets lesser priority in terms of registering actions with the host

  • Clients sync up pattern, automation and arrangement data, as well as variables to initialize plugins, effects and instruments with (but not the actual plugins and samples themselves yet, so that it won’t interupt a client working on something, since Renoise may choke loading VST’s or it may take a while to transfer big chunks of samples and recordings)

  • Each client has their own working copy of the data that they work on and the client keeps a queue of changes compared to the host version.

  • Each client’s queue gets synced back to the host so that changes in the actual project can be made and shared with the other clients accordingly, also removing items from client’s queues that were handled by the host and are now in the hosts copy.

  • Whenever host and/or multiple clients send an action at the same time that targets the same note / effect / automation / instrument slot in renoise, the action from the host or client with highest priority stays.

  • Whenever a plugin(VST or whatever) effect, plugin instrument or a sample is loaded, the host will register it, but sync it back as some network instrument dummy or network effect dummy instead. This dummy can be clicked from the host or any other client in order to try and initialize the real deal locally.

  • By example, clicking an network instrument that has sample data on a different client or host, will start downloading the sample(s) from the original renoise host/client that added the sample(s) (assuming the host or client isn’t streaming any audio for a feature mentioned below)

  • Clicking a network dummy for a VST plugin will then try to initialize the VST, if it can’t find a matching dll, it may pop up a question asking the user which plugin from their local machine to use. Renoise can then send the vars needed by the VST and if it works, it works, if not, the network dummy should stay there as a wrapper that can then also be used to unload the VST but only locally. (and removing the network dummy/wrapper would remove the original instrument/effect and dummies pointing to this instrument/effect everywhere)

  • All audio and track playback of a track still all happens locally and the dummy stuff of not yet loaded samples and vst’s will basically stay silent / do nothing until they are initialized for real.

  • Since you may sometimes need to check in with how something sounds over at someone else their machine, there may be a feature where you can hook yourself into the host or another client and then get to see their working copy that updates with their action queue (enhanced with which row / column / pattern they are viewing) sending all this to you and you’ll also get a synced audio stream of their audio that goes with what you’re seeing. That way you can see and listen what they are doing. That is without being able to do anything but watch this virtual copy of the project update on your system with their actions. And you’ll be able to hear the notes they put down, or hear the song being played on their hardware, if they hit playback for you. Not being able to directly mess with their copy keeps things simple.

  • In the case of midi instruments and sound card in and outputs, empty versions may appear in clients, which they can then route on their working copy locally to whatever they are using, or choose to do nothing and that specific instrument will not play until the host or client that added these, makes a recorded sample from some input, that can then of course be initialized and downloaded on the host/all clients as noted before on how to handle sample data.

If it worked like this, you could have multiple separate studio’s with different hardware and plugins, cooperatively working together on a track. Maybe it does get a bit technical, not being as user friendly as say, working together in google drive on a shared document or something. But I bet this would be an awesome and inspiring feature to have, which’ll open up so many possibilities for collaborations and such.

If anything like this ever comes our way, please let me know!

(any yeah what was done in Impulse Tracker 2 back in the day for LAN was very unstable, but so much good fun!)