kmatheussen / radium

A graphical music editor. A next generation tracker.
http://users.notam02.no/~kjetism/radium/
GNU General Public License v2.0
842 stars 36 forks source link

Possible? ---> 2 Instances of Radium open: Copy/Paste between them and/or sync start/stop/tempo #986

Open Lykdraft opened 7 years ago

Lykdraft commented 7 years ago

Is it possible to "interconnect" two instances of Radium and copy/paste stuff from one Instance to another? (Something like a "shared clipboard" for all open Radium instances) Also wouldn't it be good to be able to link/sync them up?

I know that AudioMulch can do that and also can sync open instances via Midiclock and also via something called "Network Sync". But basically, a start/stop sync between two Radium instances and a "shared clipboard" would be enough I guess. (So that one Radium instance "passes-thru" the start/stop key command to the other one?)

The idea came up as I noticed that when I have Radium open in the background and I have other applications open, Radium reacts to start/stop command from other applications. (No key commands, but clicking the play button in various apps also starts playback in Radium) How can that be?

Thanks & best, tL.

kmatheussen commented 7 years ago

Is it possible to "interconnect" two instances of Radium and copy/paste stuff from one Instance to another? (Something like a "shared clipboard" for all open Radium instances)

Hmm. Not currently, but things that can be serialized to text could be copied to the system clipboard. So it wouldn't be much work to support copying instrument presets between two instances, but copying tracks/blocks/range is much harder.

Also wouldn't it be good to be able to link/sync them up?

I know that AudioMulch can do that and also can sync open instances via Midiclock and also via something called "Network Sync". But basically, a start/stop sync between two Radium instances and a "shared clipboard" would be enough I guess. (So that one Radium instance "passes-thru" the start/stop key command to the other one?)

Jack has very good support for this. Then you could sync up to several radium instances, ableton, ardour, and other programs that support jack transport. Jack transport sends play/stop commands, plus song position. There is already ticket for it. Not sure how much work it would be.

The idea came up as I noticed that when I have Radium open in the background and I have other applications open, Radium reacts to start/stop command from other applications. (No key commands, but clicking the play button in various apps also starts playback in Radium) How can that be

I guess it's because Radium reacts to MIDI play and MIDI stop messages. I guess you have connected the MIDI output of a program that sends out MIDI play/stop messages to Radium...

kmatheussen commented 7 years ago

Hmm. Not currently, but things that can be serialized to text could be copied to the system clipboard. So it wouldn't be much work to support copying instrument presets between two instances, but copying tracks/blocks/range is much harder.

tracks and blocks can be saved to disk now (at least partially), so it shouldn't be too difficult either.

But basically, a start/stop sync between two Radium instances and a "shared clipboard" would be enough I guess. (So that one Radium instance "passes-thru" the start/stop key command to the other one?)

Thinking a little bit about it, just supporting start/stop from jack transport should be quick. It's the song position part that's hard to implement. But you didn't ask for song position.

Lykdraft commented 7 years ago

Alright, thanks. As there's already a ticket for something similar I could close this for now. I was just curious.

And yes, because the Blocks save/load is already partially there I thought it would be a quick addition.

Indeed, song position is not important. The idea is that you can open a second song to "mash it up" with the first one. Often you have unfinished stuff lying around and very often it is pretty cool to "merge" ideas or different parts from 2 unfinished songs.

For that purpose all that's really needed is a way to listen to two songs in sync. (i.e. just start them at the exact same time) and to be able to somehow get the individual parts from one song into the other one.

Best, tL.

kmatheussen commented 7 years ago

Song position could be quite important though. If Radium supported song position, you could run a more dedicated daw for audio recording, and use Radium for note editing and so forth. And both programs would start and stop playing at the correct position, no matter which of them you play from. It's actually quite simple to implement too when thinking more about it.

Lykdraft commented 7 years ago

Alright. Well, probably the easiest way might be to let Radium be able to read Midi SPP? (Midi SongPositionPointer). Then again Radium then would need to generate this as well... But nearly every DAW on the planet can read that.

(Also there would still be the "rewire" option...)

kmatheussen commented 7 years ago

Sure, but jack transport is more reliable, and easier to implement, than midi timing. Regarding rewire, I've never heard anything good about it.

kmatheussen commented 7 years ago

In addition, there's probably programs that converts MIDI timing to and from jack transport.

Lykdraft commented 7 years ago

Sure, but jack transport is more reliable, and easier to implement, than midi timing.

...alright, even better.

Regarding rewire, I've never heard anything good about it.

Oh, really? That's interesting. I've worked with rewired apps for years on a daily basis without any problems at all... :) Especially rewiring stuff like Renoise, Reason or Numerology to ProTools and Logic felt very natural.

kmatheussen commented 7 years ago

Yes: https://github.com/x42/ltc-tools https://github.com/x42/mtc-tools https://github.com/x42/jack_midi_clock

These tools can probably be started automatically by Radium.

Lykdraft commented 7 years ago

Oh, these look very good indeed.

kmatheussen commented 7 years ago

Oh, really? That's interesting. I've worked with rewired apps for years on a daily basis without any problems at all... :) Especially rewiring stuff like Renoise, Reason or Numerology to ProTools and Logic felt very natural.

Oh, I didn't knew it worked. I've just heard that it's crap compared to jack transport, from programmers.

Lykdraft commented 7 years ago

Oh, I didn't knew it worked. I've just heard that it's crap compared to jack transport, from programmers.

Wow, given the fact that Rewire is stable as hell then Jack Transport sounds like the real deal... However, Rewire might be working so well now because it is fully implemented into the major DAWs since quite some time now. (including multi-audio channel routing and various other options and usually everything is nearly full-automatic.)

kmatheussen commented 7 years ago

Wow, given the fact that Rewire is stable as hell then Jack Transport sounds like the real deal...

Well, it might work perfectly for the user, but still be considered crap by programmers, for various reasons. There might be programmers that think the jack transport is crap and rewire is not, for all I know. But jack transport has a clean API, so it seems hard to criticize. I think jack transport is similar to that new similar thing from ableton which got some attention recently.

kmatheussen commented 7 years ago

Jack has very good support for this. Then you could sync up to several radium instances, ableton, ardour, and other programs that support jack transport.

Sorry, not Ableton, but Bitwig. Bitwig supports jack. There is a program that bridges jack transport and ableton link though.

kmatheussen commented 7 years ago

Jack transport is now fully implemented. You can start two radium instances, and when you start playing in one of them, both instances will start playing at the exact (sample-accurate) position and at the same exact (sample-accurate) time. Just enable "Jack Transport" under preferences->sequencer.

kmatheussen commented 7 years ago

Sorry, not Ableton, but Bitwig. Bitwig supports jack. There is a program that bridges jack transport and ableton link though.

Seems like ableton link is only about syncing beats and tempo across applications. There is no functionality to e.g. start a sequencer at 5:00. http://lists.linuxaudio.org/pipermail/linux-audio-dev/2016-September/036555.html

Jack transport syncs tempo across applications too though, but it seems like ableton link is more sophisticated: http://lists.linuxaudio.org/pipermail/linux-audio-dev/2016-September/036558.html

Lykdraft commented 7 years ago

Thanks a lot and thanks for the info as well. This is very good anyways as it might allow other users now to sync up Radium to something else. Don't know why some people on the User side complain that much about Jack though.

kmatheussen commented 7 years ago

Don't know why some people on the User side complain that much about Jack though.

I know of two reasons:

  1. On windows, the GUI to control jack has been very buggy and gives no feedback from jack. In addition, it falsely reports that jack has "crashed" when jack receives arguments it can not use. Had people only used the command line to start jack on Windows there wouldn't have been so much frustration. [1] Jack itself on Windows seems rock stable though. I've used it since around 2007 and can't remember any problems.

  2. The jack server sometimes crashes/freezes in a way that makes many users choose to restart the computer in order to restart jack (you don't have to restart the computer, but googling the problem probably takes more time than doing a restart) . This goes for all platforms. It's not a bug in jack itself that causes these crashes/freezes, it's the way jack reacts when clients misbehave.

[1] Not really anyones fault though, the author of qjackctl probably had nothing to do with the windows version. It's mostly fixed now though, but the buggy program was included for almost 10 years.