elieserdejesus / JamTaba

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

Add comboBox to select midi device and channels #53

Closed elieserdejesus closed 8 years ago

elieserdejesus commented 8 years ago

Add comboBox to select midi device and channel in bottom of input tracks, like sonar and other DAWs. At moment we can't see the select midi channel without reopen the input type menu.

Ezeer commented 8 years ago

Good idea !

Ezeer commented 8 years ago

I take that doc' . But i need more detail on that task : Each track must own that combobox , so it is dynamically created , yeah ?

elieserdejesus commented 8 years ago

Ezee, I do'nt think in the details yet, but I imagine something like Sonar: image

We can use the first combo to select [Mono, Stereo, MIDI, No Input]

and the second combo will be populated after user choose something in the first combo.

Some possible requirements: 1 If user choose Mono in first combo the second combo show the mono inputs available. 2 -If user choose stereo in the first combo the second combo show available stereo pairs. 3 - If we don't have available stereo pairs (just one mono input) the option "Stereo" is disabled in first combo. 4 - If user choose MIDI in first combo the second combo show the available midi devices, and a third combo is created dinamycally (or created statically but hidden) to choose channels.

5 - If user choose No Input in first combo the second combo will be hidden.

What you think? I not 100% shure this model is more user friendly. We wil put more info in the GUI (up 3 combos), maybe the current approach is more clean, but when you need check the selected midi channel in a input track is necessary open all menu tree, I think this is not so good.

Ezeer commented 8 years ago

What i think ? I don't need to think , you do it for meh eh eh . Seriously , you just wrote a Finite State Machine man ... very good !

"A finite-state machine (FSM) or finite-state automaton (plural: automata), or simply a state machine, is a mathematical model of computation used to design both computer programs and sequential logic circuits. It is conceived as an abstract machine that can be in one of a finite number of states. The machine is in only one state at a time; the state it is in at any given time is called the current state. It can change from one state to another when initiated by a triggering event or condition; this is called a transition. A particular FSM is defined by a list of its states, and the triggering condition for each transition." https://en.wikipedia.org/wiki/Finite-state_machine

That FSM approach is user friendly ( less for the brain of the coder but it is nice to implement ! ), because each user decision lead to a global reaction ( yeah a event chain ) that setup the track for him to work at its optimal capacity .

I don't have looked yet in the way you coded your tracks UI , but if you use some switch() with a lot of case , you have already a basic state machine . Complex FSM can use Nodes that you can connect for example .

I have bought a book from a genius guy , some of his work his available online , and it is a good initiation to FSM and more ( specialized in Game Ai ) : http://www.ai-junkie.com/architecture/state_driven/tut_state1.html

Perhaps too much for coding some comboBox behavior , but an entire " intelligent " console , with a lot of bus ... why not ?

elieserdejesus commented 8 years ago

Ezee, look at the private slots section is LocalTrackView,h.

Ezeer commented 8 years ago

Ezee, look at the private slots section is LocalTrackView,h. ok , i've found it , thx :

private slots: void on_inputSelectionButtonClicked();//build and show de input selection menu void onmonoInputMenuSelected(QAction); void onstereoInputMenuSelected(QAction); void on_MidiInputDeviceSelected(QAction*); void on_noInputMenuSelected(); };

I will start from there .

elieserdejesus commented 8 years ago

Ezee, are you working in this? If not yet I can take this.

Ezeer commented 8 years ago

i've started to look at that yesterday , to understand how you add the boxes with the code . i'm gonna be slow on this , so please take it !

elieserdejesus commented 8 years ago

Ok Ezee, I'm taking!

elieserdejesus commented 8 years ago

After a lot of coding I realize the old/current input selection approach is more user friendly. Use 2 combos to selection audio input and 3 to select midi (midi mode as input, midi device, midi channel) is more complex and less clean. The current approach (menus) is the same approach used in Reaper, is simple and is good enough. So I'm discarding this enhancement, is not really an enhancement.

jonjamcam commented 8 years ago

Hi guys. I have a queston on this matter. 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. Isn't a simple solution 2 boxes: one for audio and one for MIDI?

Cheers!

elieserdejesus commented 8 years ago

Jon, this is an interesting issue. Please create a new issue, so we can discuss the details. I think this is possible, but I never see a DAW allowing this feature directly. In general we always choose between MIDI or AUDIO in every track, I never see both options at same time. Let's discuss this idea in another issue...