elieserdejesus / JamTaba

Jamtaba is a software to play online music jam sessions.
http://www.jamtaba.com
244 stars 50 forks source link

Input audio and midi at the same time #102

Closed jonjamcam closed 7 years ago

jonjamcam commented 8 years ago

Some plugins/instruments need you to input audio and midi at the same time (vocoders, loopers). Currently there's no way to do that in Jamtaba.

Reaper solves this issue by flexible routing capabilities. So you create a new track in Reaper and send it to where you need.

I was thinking about this lately and there's another big problem. What if you have two or three keyboards and need them all to connect to KONTAKT for example?

Let's try to think in simple terms. You have already a rack to choose plugins with four racks. I use at most two and I need two extra inputs. My question is could this racks be used as extra MIDI inputs when not used by plugins?

Midi has this structure separated in channels, so mixing midi connections does not mean mixing midi information if they are on separate channels. Audio is a different matter. you always need a mixer.

So in short.......same configuration as now, but the first two racks can be used as midi inputs or vstplugins, but not both. what do you think?

elieserdejesus commented 7 years ago

@jonjamcam , at moment we have no input, audio, and midi options in track input panel. I was thinking in add a new option audio + MIDI. Seens to me this solve the vocoder issue. What you think about?

But you mentioned the extra MIDI inputs too. but seens to me this is a sepparated issue?

jonjamcam commented 7 years ago

add a new option audio + MIDI.

Yeah, it's good enough.

(Now that I think about it what I wrote previously (https://github.com/elieserdejesus/JamTaba/issues/102#issue-115690497) was too complicated. It's good to think in simpler terms)

elieserdejesus commented 7 years ago

@jonjamcam , I realized this feature is complicated from the UI perspective. The problem is how users will select audio and MIDI input?

I think in some options and at moment the best solution I can imagine is allow audio and midi everytime. So users always will see a midi input selection and an audio input selection. User can select "no input" to both audio and midi, can select valid audio input or valid midi input, or both.

I think this idea work, but I don't it's good from an end user perspective. The UI will be more complex, and just to support a very exceptional case: AUDIO + MIDI in vocoders, etc.

I think we need think more about this feature until we have a good solution.

Please tell me if you have another ideas.

jonjamcam commented 7 years ago

the UI will be more complex, and just to support a very exceptional case: AUDIO + MIDI in vocoders, etc. Please tell me if you have another ideas.

Sure. No problem. For the moment I have this one idea:

Use the subchannel as the additional input (midi or audio) adding a button or a checkbox, for example.

So to implement it let's say you select a vocoder in Channel 1:

1.- If you select Audio as the input, then you add a subchanel, you check the "route subchannel to main button" and it lets you select midi ot no input only.

2.- If on the other hand you select Midi sa the main input, you add a subchannel, check the "button" and it lets you select Audio or no input.

This feature applies only to standalone because D.A.W. in general have lots of routing options.

So in short, the "button" will route the "other" type of input (midi or audio) not to the master as it is now, but to the main channel.

Do you think this is a better implementation @elieserdejesus?

elieserdejesus commented 7 years ago

@jonjamcam , I think this is a good idea.

Some other things/details to think about before start coding:

1 - use a button in the local track to activate this "hybrid input mode"? Where? Or a menu entry in the "gear" button, like entries to add and remove channels.

2 - how will be the visual feedback when the 2 subchannels are acting as 1 channel using 2 input types?

jonjamcam commented 7 years ago

use a button in the local track to activate this "hybrid input mode"? Where? Or a menu entry in the "gear" button, like entries to add and remove channels.

1.- In the spirit of trying to use what's already there it occured to me that we could use a "tools button" type for this function:

image

Another alternative is this function could be assigned to the tools button dialog of the subchannel as a checkbox inside ("route all output to main"). .This will be available only for midi channels, which I think is a good tradeoff for simplicity.

image

In this case feedback could be an arrow icon or a different color so the user know:

image

2.- I like your idea of using the gear button too. It's clear to have a separate entry that says "add slave subchannel" or something along these lines.

elieserdejesus commented 7 years ago

@jonjamcam , I like your "check box" idea in Midi tools dialog. It's very clear. We can add a "gear" menu entry too, available only when user created the second subchannel.

I think is better (from user perspective) allow midi routing only in second subchannel. The steps to use a vocoder, for example, will be: 1 - insert the vocoder plugin in the first subchannel 2 - select audio input in first channel 3 - create the second subchannel 4 - select MIDI input 5 - open MIDI tools dialog and check the route to main checkbox.

In my mind make more sense always create the audio subchannel first, and route the midi track. I can't remember plugins where make more sense create the midi track first and route the audio track . Can you imagine/remember some plugns where is better create midi subchannel first?

The arrow idea for visual feedback is perfect. I'm just a bit worried with track layout, if we put a icon on top the vertical align will change, but we can think in something, it's not a complex issue.

jonjamcam commented 7 years ago

I can't remember plugins where make more sense create the midi track first and route the audio track . Can you imagine/remember some plugns where is better create midi subchannel first?

I agree. In my experience where I need to have both input types, normally I route the audio first and then the midi as secondary input for control purposes (vocoder, audio looper).

jonjamcam commented 7 years ago

So if this feature will be used for midi only, how do we handle the vst racks, the solo button, gain buttons and the stereo invert button of the second subchannel? Should they be disabled in this particular case?

Theres a possibility that you insert a vst plugin that sends audio instead of midi, so in this case the feature may not work as expected.

elieserdejesus commented 7 years ago

@jonjamcam , I created a PR to this feature: https://github.com/elieserdejesus/JamTaba/pull/682

So if this feature will be used for midi only, how do we handle the vst racks, the solo button, gain buttons and the stereo invert button of the second subchannel? Should they be disabled in this particular case?

I think it's a good idea disable these buttons, will be clear for users.

Theres a possibility that you insert a vst plugin that sends audio instead of midi, so in this case the feature may not work as expected.

At moment is midi routing only.

jonjamcam commented 7 years ago

At moment is midi routing only.

Yes that's perfect. I don't think audio routing is necessary. My question is what would happen if you insert a vst plugin that sends audio instead of midi, as kontak for example. Do you think @elieserdejesus this could mess the routing?

elieserdejesus commented 7 years ago

... as kontak for example. Do you think @elieserdejesus this could mess the routing?

I created a task in the PR to handle this situation, but I'm not shure what is the best option. Let's consider an example:

1 - Select audio input in first subchannel 2 - Create e 2nd subchannel and select midi input 3 - Activate the midi routing in MIDI tools dialog (working as expected). 4 - Now, add Kontakt in 2nd subchannel. What is the expected midi input behavior now? The midi input will be routed to first subchannel ONLY? Kontakt will see the midi messages?

Is possible send the midi messages to both routed channel and kontakt, but I think it's more clear send only to the routed subchannel. In my mind when we check the "MIDI routing" option we are thinking in change/redirect the MIDI route and not in "add a second MIDI route".

What you think @jonjamcam , what is more clear for you?

jonjamcam commented 7 years ago

In my mind when we check the "MIDI routing" option we are thinking in change/redirect the MIDI route and not in "add a second MIDI route".

Yes. I agree.

jonjamcam commented 7 years ago

Let's consider an example:

1 - Select audio input in first subchannel 2 - Create e 2nd subchannel and select midi input 3 - Activate the midi routing in MIDI tools dialog (working as expected). 4 - Now, add Kontakt in 2nd subchannel.

Same example, don't you think @elieserdejesus that the vst racks should be disabled in the first place? I don't see a point in having vst plugins for this function. Same with fader and pan.

elieserdejesus commented 7 years ago

@jonjamcam , are you suggesting disable plugins in the second subchannel, right? If yes, I agree is better disable all audio related controls (pan, fader, etc).

jonjamcam commented 7 years ago

is better disable all audio related controls (pan, fader, etc).

Yes. In the second subchannel.

elieserdejesus commented 7 years ago

This issue was implemented in PR #682. Thanks for your help and ideas @jonjamcam !

jonjamcam commented 7 years ago

Thanks to you @elieserdejesus for considering this feature.