PreenFM > preenfm2 and preenfm3

Mixer select from midi

(1/2) > >>

Toltekradiation:
Hello Xavier,

lately I tried to recall Mixer files from midi,
but found it a bit tricky to do, because of the CC#0 & #32 to set before sending program change.

In my opinion, it would be much easier to use midi bank 127, and program change.
I don't think midi bank 127 is likely to be frequently reach anyway !

for now, I'm a bit lost in the code, i guess it should be done in MidiDecoder.cpp but i have a hard time figuring things out :P

i would be grateful for some help here ;D

lokki:
i did some similar work on preenfm2, but i have no access to those files anymore. in my opinion (if you tackle this) it makes much more sense to implement this as an option in the settings. it is very likely that a user will set this once for his setup... so an option to choose what Program Changes should do on the preenfm3, either load a different sound on that channel, or load a whole mix. i think there is a global midi channel on preenfm3 as well? it was another thing i added on preenfm2. so maybe program changes on global midi channel could load a new mixer file?

lokki:
and yes i believe i added it to the MidiDecoder.cpp on preenfm2

Toltekradiation:
Thanks for that, using global midi make sense indeed !

Xavier:
I'm not sure what you're trying to do.
Just to get rid of the CC#0 ?

You can try to modify this part
https://github.com/Ixox/preenfm3/blob/master/firmware/Src/midi/MidiDecoder.cpp#L336


--- Code: ---            newAction.action.param1 = bankNumber[timbres[0]];
            newAction.action.param2 = bankNumberLSB[timbres[0]];

--- End code ---

Idea (not tried):


--- Code: ---            if (newModeEnabled && bankNumber[timbres[0]] == 0 && bankNumberLSB[timbres[0]] == 127) {
                // Load mixer
                newAction.action.param1 = 1;
                // Load mixer from first bank only
                newAction.action.param2 = 0;               
            } else {
                newAction.action.param1 = bankNumber[timbres[0]];
                newAction.action.param2 = bankNumberLSB[timbres[0]];
            }

--- End code ---

As written in code comment, that will only load mixxer preset from Mixer bank 1.
But you can also decide that bankNumber >= 64 is mixer and adapt the code.

Navigation

[0] Message Index

[#] Next page

Go to full version