Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Midi feedback (hydrogen > midi controller) #265

Closed
thijz opened this issue Jul 27, 2015 · 17 comments
Closed

Midi feedback (hydrogen > midi controller) #265

thijz opened this issue Jul 27, 2015 · 17 comments

Comments

@thijz
Copy link
Member

thijz commented Jul 27, 2015

midi feedback would be really great

an example:
currently it is very easy to link the mute button of any instrument to a button on a midi controller
pressing the button on the controller will toggle the mute of that instrument
so far so good

however, if you then change the mute statue via the GUI this change will not be reflected on the midi controller.
if you have a controller that has buttons with integrated LED, the state of the LED will be out of sync wit the GUI

the same goes for midi controllers that have motorized faders or rotary encoders with a led ring

@thijz thijz added this to the 0.9.7 milestone Jul 27, 2015
@thijz
Copy link
Member Author

thijz commented Aug 3, 2015

note that hydrogen needs to transmit the status for all midi operable items (that are actually in use) on startup and also when you load a song

@thijz thijz modified the milestones: 0.9.8, 0.9.7 Aug 7, 2015
@thijz
Copy link
Member Author

thijz commented Jul 12, 2016

this one still really bugging me :-(
when using a midi controller you basically have to turn all knobs to get them in sync with the app before you can start (using BCR2000 with rotary encoders and led rings)

@mauser
Copy link
Member

mauser commented Jul 16, 2016

Hi Thijs,

can you explain how your midi controller works? Does it just the receive the same midi message/value that it sends? Maybe you could attach a midi dump (made with a program like kmidimon) to this ticket so that i can see what messages are expected..

I don't think that it would be a big issue to enable a midi-out mapping..

@thijz
Copy link
Member Author

thijz commented Jul 17, 2016

Hi Sebastian
sure i can do some research and provide a capture
IMHO it would be great if this feature would be integrated in the existing midi functionality so it doesnt have to be configured separately for each element
indeed, the element that is controlled via midi will send out midi data on the same address as it receives data from

one more thing : maybe it would be good to have a separate hydrogen automation midi port dedicated for midi controllers (this should improve timing for the regular midi note output since the note messages dont have to share the same midi port with the automation messages)

@mauser
Copy link
Member

mauser commented Jul 17, 2016

Hi!

My plan is to "duplicate" the input mapping mechanism for the midi output mapping wth a functionality to copy the settings from the input mapping.

This is also a good opportunity to get my import/export of midi mappings into place, this is sth. i wanted to do for some time and which already exists in form of a prototype.

@thijz
Copy link
Member Author

thijz commented Jul 19, 2016

fyi:
ardour has a range of output MIDI ports :
image

this is really handy if you want to use an external midi controller (eg BCR2000/BFC2000) to control the faders and transport, and a regular midi piano keyboard or a midi drumkit to play the notes

EDIT:
having multiple midi in/outs is not only handy to keep things organised, in some cases it is a must !
MIDI is a slow protocol so the last thing you want to do is flood the MIDI out that is sending out midi notes (eg to a synth) with CC meassages for the midi controller. This will add a lot of jitter to the midi note messages causing the synth note timing to jump all over the place

@thijz
Copy link
Member Author

thijz commented Sep 8, 2016

just did some research and the application (Hydrogen in our case) should indeed send out on the same CC controller id (and midi port and channel) as it receives CC messages from

Note that it is important that the application sends out the initial position of all it's midi controlled parameters to the controller on startup or whenever a new song is loaded
If it does not do this the application and controller will be out of sync.

@trebmuh
Copy link
Member

trebmuh commented Sep 8, 2016

Hi, just adding my voice for this feature. It would be very a very neat one for Hydrogen to have, especially for people playing live.

@mauser
Copy link
Member

mauser commented Jun 20, 2017

Hi,

i've implemented now the first part of the midi feedback support, together with OSC feedback.

The following action are providing a midi (and OSC) feedback now:

  • MASTER_VOLUME_ABSOLUTE
  • STRIP_VOLUME_ABSOLUTE
  • STRIP_MUTE_TOGGLE
  • MUTE_TOGGLE
  • STRIP_SOLO_TOGGLE
  • TOGGLE_METRONOME
  • PAN_ABSOLUTE

With those actions, you should be able to test the midi feedback support. The STRIP_SOLO_TOGGLE action is still buggy, but I hope that the current state is a good demonstration of what will be possible.

How to use midi feedback:
At the moment midi feedback is always enabled and Hydrogen sends out all CC feedback message on Channel 1. In addition, only the alsa midi driver is supported at the moment..

@thijz
Copy link
Member Author

thijz commented Jul 1, 2017

ohhhhhhhhh yeah :-)
@mauser : i love you !!! ... awkward silence ... euh, well you know what i mean ;-)

i just tested this with my BCF2000 and it seems to work as expected, but i will test more as soon as i find the time.
Note that i have not yet tested all supported midi actions, and i am using midi only

see volume strip midi feedback in action here : https://youtu.be/6Wi3wgntgsI

@mauser
Copy link
Member

mauser commented Jul 4, 2017

@thijz : Great! I hope that i can finish the missing parts in the next weeks/two months, if there are some rainy summer days ;-) I would also think that it might be diserable to disable the midi feedback via an global option.

@thijz
Copy link
Member Author

thijz commented Jul 6, 2017

i really hope we have a very, very, very rainy summer ;-)

Indeed, the option to disable midi feedback would be good and in some cases it may even be an absolute requirement. Some hardware/software synths or samplers dont handle lots of midi input very well (trust me, been there).
Also when you combine midi out for your controller and midi out coming from the H2 sequencer (the regular notes that H2 sends out to trigger external hard/software) this can lead to jitter on the midi notes.
Therefore a dedicated midi out for notes and one for controller(s) would be a great addition

@mauser
Copy link
Member

mauser commented Jul 11, 2017

Small update: Midi feedback can now be enabled/disabled via the preferenes dialog. In addition, the output of midi control change messages is now also possible for JackMidi, PortMidi and CoreMidi.

The PortMidi output was never enabled until now, which means there was no midi output for windows (beside JackMidi) at all. It is strange that this hasn't been reported :-(

@thijz
Copy link
Member Author

thijz commented May 15, 2018

hi @mauser !
it's been some time but now i found the time to test some more on this and found an issue :
When you enable midi feedback the CC midi messages that h2 sends out are all on midi channel 1. This is ok when you use your set the midi channel of your midi controller to '1', but for all other channels this does not work since the midi controller ignores the messages.

I see 2 options :

  1. the midi messages are sent out on the midi channel that you configured on the Midi System preferences
  2. next to the 'Enable feedback' checkbox a second dropdown is added for the outgoing midi CC messages

I think option 1 makes most sense, but option 2 does add extra flexibility

@mauser
Copy link
Member

mauser commented Apr 7, 2019

I see 2 options :

1. the midi messages are sent out on the midi channel that you configured on the Midi System preferences

2. next to the 'Enable feedback' checkbox a second dropdown is added for the outgoing midi CC messages

I think option 1 makes most sense, but option 2 does add extra flexibility

Hi @thijz !

The first option would also make sense to me, but there is currently a setting "All", meaning that we accept midi from all channels. This setting is the default. While it makes sense to accept input from all channels, it does not make sense to broadcast feedback data to all channels (at least in my opinion with my small understanding of midi).

With that beeing said, the second option would seem preferrable to me. Or do you see a possibility to overcome the "All" problem of Option 1?

@thijz
Copy link
Member Author

thijz commented Jun 15, 2019

Hi @mauser
i'm playing around with the midi feedback config, but i cant get any midi feedback out of H2
not with jackmidi driver, not with alsa midi driver
it also doesnt make any difference if i select an other midi channel ...

note that when i hit Stop in H2 i do get note off messages (for my midi out enabled instruments), so H2 does output something, just no midi feedback

any idea ?

@thijz
Copy link
Member Author

thijz commented Oct 31, 2019

ignore the above massage (brainfart) midi feedback works just fine
i will close this ticket but open a new ticket specifically for the midi output channel config option (as discussed above)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants