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

General MIDI instrument presets #204

Open
Horganic opened this issue Aug 26, 2024 · 1 comment
Open

General MIDI instrument presets #204

Horganic opened this issue Aug 26, 2024 · 1 comment

Comments

@Horganic
Copy link

A set of 128 patches representing the General MIDI instruments (https://en.wikipedia.org/wiki/General_MIDI) could be made available through a General MIDI option/mode. Might be nice to have it as a mode rather than a patch/configuration import so you can flip back and forth easily between "banks".

Activating a General MIDI mode would replace the patch list with a list of presets representing General MIDI instruments (example patch settings at https://github.com/rhargreaves/mega-drive-midi-interface/blob/main/src/presets.c).

Beyond instrument patches, MIDI files are often arranged using using rapid program changes on a single channel to multiplex different instruments on a single channel, so maybe in this mode Program Change messages could be used to cache patches into RAM slots in this mode rather than sending the entire patch each time.

Alternatively, it would be nice to have a readily-available/bundled import file or configuration save-file whose 128 patch slots are already pre-configured with General MIDI instruments.

Disney's Main Street Electrical Parade awaits!

@2xAA
Copy link
Owner

2xAA commented Sep 1, 2024

Hey @Horganic,

A General MIDI mode sounds good to me!
We can take the MDMI patches and bake them into genMDM Editor for genMDM users.

Quite a few considerations to make for genMDM though.

MDMI doesn't support RAM slots but not an issue as it already has the GM patches on program changes.
RAM slots are a genMDM only feature and there are only 16 of them.

genMDM

For genMDM users, we would need a mechanism to signal which of the 128 patches should be stored in RAM vs sent via CCs.
One way of doing this could be learned with a whole MIDI song play-through and program changes weighted to then know which patches can be stored in RAM, but that sounds like a lot of work for something which may be quite niche.

Another way of doing this would be to create a more expansive UI component for patch management and select exactly which patches you would prefer to have loaded into RAM.

Neither way is particularly good for two songs subsequently performed if they have different patches they need loaded into RAM.

The RAM preference could be saved into the .ged editor state and automatically loaded to the device when the editor state is loaded, which again feels a bit clunky, or again create another UI component for editor state management within the app.

MDMI

For MDMI users, in MDMI mode and the proposed General MIDI Mode, we can pass-through Program Changes to select the FM Presets defined by MDMI, but we don't really need to support this. MDMI users can just send MIDI directly.


Hopefully some of that makes sense. I've just had my morning coffee, haha.

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

No branches or pull requests

2 participants