Buzztrax / buzztrax

Buzztrax is a modular music composer for Linux.
buzztrax.org
GNU Lesser General Public License v2.1
112 stars 13 forks source link

Feature request: multi-out #55

Open Gimmeapill opened 9 years ago

Gimmeapill commented 9 years ago

I'd like to mix and master in an external program (either one of the DAWs or Renoise). For this, multi out with jack is needed. This is achievable in Buzz running on wine with Polac Asio out -> wineasio -> jack. Mathilde tracker 2 is also multi-out enabled (to master each track independently). It doesn't seem to be possible to do the same in Buzztrax with the exiting set of i/o machines (unless I missed sth?)

ensonic commented 9 years ago

Yes, I have only one master right now. How does it work in practise? Can you add a screenshot of the machine view for this in classic buzz? What you can do in buzztrax is to render the song-with single tracks, is that conceptually what you want, but just make it available live?

Gimmeapill commented 9 years ago

That's for live use - offline rendering is not a suitable workaround here. I'm using +/- 40 individual channels at the moment (most of them taken by matildes with drums). This starts to make quite a busy jack patch bay, but that workflow has been doing fine for the last 5-6 y.

In Buzz, I just send each Generator to it's own Polac Asio out (Effect machine), assigned to one of the virtual asio ports created by wineasio. They show up as jack ports that go the track inputs on the DAW. I can then control the volumes individually + do some kind of one-the-fly mastering with compressors / limiters / maximizers, add some more effects, etc... all controlled live with a Behringer BCR2000. Actually I don't even connect anything to the Master in Buzz - it's just used for tempo setting.

Doing the mixing in Buzz itself simply never sounded as good + this opens the possibility to record individual tracks in a linear fashion if needed.

I really like the possibility to integrate specialized tools together with Jack, this is kind of a must nowadays. I'll add a screenshot of the whole thing very shortly...

ensonic commented 9 years ago

Okay, I think I get it. I was wondering if it makes sense to have a multi-out flag on the master. In this case all the branches would be transparently duplicated and each feed into a separate jack out. E.g.

src1 -> 
        delay -> master
scr2 -> 

would transparently duplicate the delay fx but sync the settings, so that you will get separate streams for src1 and src2 and they actually get mixed in jack (although it would also work for e.g. pulseaudio or alsa).

Or do you like having the explicit out-machines better? I need to did into what multi-out means for a machine (could be that they expose each track).

Gimmeapill commented 9 years ago

I'm not sure to fully understand the example. If you mean a Master machine that dynamically creates jack ports to match the number of input connections (or with a setting in the audio preferences to specify the number of output ports when using jack), then yes. But it can be a dedicated audio out machine as well - for me this is transparent. I think the way Polac did it in Buzz was more a workaround anyway.

If that can help for inspiration, Buze has a multi-out machine and uses jack on windows (probably because I also bugged Anders E. on this topic ;-)).

ensonic commented 9 years ago

Yep, basically the master would have an option to create one jack out for each source and all the effects that are between src and master would be duplicated that you can apply the same effect to multiple sources (and have the patterns just once). Not sure if that is confusing though.

I also saw the out-machines in buzz as a work-around. The challenge here is to get the tradeoff between easy-to-use and essential features right.

Since you mention the bcr2000, did you try to use it to control machines in buzztrax? Also which plugins you use from jack? Another option here is to also run those plugins inside buzztrax. maybe I can try to make the lv2 bridge work in the next release cycle.

Gimmeapill commented 9 years ago

Yep, basically the master would have an option to create one jack out for each source and all the effects that are between src and master would be duplicated that you can apply the same effect to multiple sources (and have the patterns just once). Not sure if that is confusing though.

Yes, I think this is already too complex, and would possibly also defeat the WYSIWYG/modular approach. I already see users enabling it by mistake, connecting things and losing tracks because their jack ports are not connected to anything behind.

I think most users (me included) would just expect the ability to select the number of jack ports in the global preferences once jack is selected as the audio driver. This way you could possibly deal with Inputs as well in the same place (I didn't check how the audio in works, just an idea). This is how it's done in Renoise and works fine.

Actually another potential problem I see with having the master managing everything is the connections order: assuming you connect and disconnect sources when working on a patch, the order would quickly get messed up if something is removed in the middle (that's what happens in Buzz). With 40 wires going to a single output machine, it would become quite tricky to connect/disconnect anything actually - very frustrating.

So I take it back, my preference goes to 1 output machine that connects to 1 output port (or maybe per stereo pair). And the only setting should be the output port number.

Since you mention the bcr2000, did you try to use it to control machines in buzztrax? Also which plugins you use from jack? Another option here is to also run those plugins inside buzztrax. maybe I can try to make the lv2 bridge work in the next release cycle.

I need to test more. So far control of the machine parameters with the BCR seems to work as designed. I wouldn't mind having more fine grained control (things like min/max value, invert, bi-directional communication), but it's workable. The thing I'm missing is the ability to change presets via midi, like what PeerState does in Buzz. This one is a blocker as I have no workaround (same as Looping Control).

As for the LV2 plugins, the only thing I use at the moment are CALF + ZAM suites - mostly the limiters and tube emulation. I can try mixing/and mastering inside Buzztrax and provide some feedback if you plan to focus on this. But I don't have any particular need for LV2 inside Buzztrax - I prefer having a traditional mixer/daw with precise volume control at the end of the signal chain. Actually, I'd rather even do the opposite and use Buzztrax inside Ardour/qtractor/whatever for what it's good at: tracking and loading cool generators ;-)

Gimmeapill commented 9 years ago

Screenshots. In the current config I'm using Renoise as a mixer due to stability and perf issues with Ardour 4. It feels quite strange to post screenshots of 2 proprietary softs on github, but you get the idea ;-)

2015-06-12-231057_1366x768_scrot 2015-06-12-231321_1366x768_scrot 2015-06-12-231432_1366x768_scrot