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

Feature request: add support for MIDI PC/LSB/MSB messages #1281

Open
notsmoothsteve opened this issue May 18, 2021 · 2 comments
Open

Feature request: add support for MIDI PC/LSB/MSB messages #1281

notsmoothsteve opened this issue May 18, 2021 · 2 comments

Comments

@notsmoothsteve
Copy link

Hydrogen version * : 1.01
Operating system + version : Windows 10 20H2 x64
Audio driver + version : N/A


From what I understand, any GM2, GS, or XG/XGLite MIDI device has multiple drum kit voices that are selected through use of Program Change (PC), LSB, and MSB MIDI messages. For instance, my Yamaha keyboard (which supports XGLite) has about two dozen drum kit voices, such as two "standard" kits, rock, electronic, jazz, and a variety of "ethnic" percussion kits, and there's a manual that tells me what PC, LSB, and MSB to use to select each one. I've discovered that to select a particular voice on the MIDI percussion channel, all I need to do is to include the PC; to select it on any of the general-purpose MIDI channels, I believe I need to include all of LSB, MSB, and PC. Without this, my keyboard only uses its first standard kit when playing MIDI drums.

As far as I can tell, Hydrogen does not have the capability to do this, at least not when saving to a MIDI file (which is what I do), and I don't think it can do this with a MIDI device connected to the computer, either.

The workaround I've been using is to do my drum programming in H2, export to a MIDI file, then load up the MIDI file in a MIDI file editor and manually add the PC. It works, but it would be nice not to have to do this extra step - and for those who use H2 as a sequencer directly controlling a MIDI device, I suspect there's no way to do this unless their MIDI device has a setting to force the MIDI file/datastream to be played using a specific voice.

I don't know much about MIDI so I don't know what technical limitations and requirements would come into play. It would be useful if H2 had the ability to use more than one drum voice in the same song (e.g. if you want to program the drum part for In The Air Tonight by Phil Collins, you need a drum machine voice for the first part of the song but an actual drum kit voice for the second part). And since the most common use of H2 probably involves all of the instruments in a drum kit being part of the same MIDI voice, it would be good if the MIDI PC/LSB/MSB parameters didn't have to be entered for every instrument in the drum kit. Perhaps the PC/LSB/MSB could be in the properties of the drum kit, with overrides available on each instrument - or maybe MIDI requires different PCs to be on different channels, which would suggest that the properties of the drum kit could include PC/LSB/MSB for each channel.

I hope I've done a good job of explaining what I'm suggesting. I would of course be happy to clarify if there are things I haven't made clear enough.


  • H2 version : see 'Info - About', or in case you build Hydrogen from source use 'git rev-parse HEAD'
    ** if you are reporting a bug, please describe how the bug can be reproduced
@theGreatWhiteShark
Copy link
Contributor

I don't know much about MIDI

Well, you seem to know already quite a lot about MIDI. Unfortunately there is no one on the current development team who plans to fix/enhance the MIDI support of Hydrogen in the foreseeable future. If you want you can give it a shot and I will do my best to help you with the programming side of things.

@notsmoothsteve
Copy link
Author

Unfortunately, it's not practical for me to do this - I know little about MIDI (basically just what you see above, and even at that I'm probably missing some key information needed to implement MIDI features) and my limited dev skills are not applicable to this project in so many ways, especially as I don't speak C++. I could help test things (albeit with only one MIDI device to test with) but actually doing the implementation would need someone other than me.

Hopefully some day the project will have a team member who does MIDI stuff and can work on the numerous MIDI-related issues in the tracking system.

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

2 participants