Sorry for the x-posting to rosegarden-devel

On 23/09/2023 09:08, Lorenzo Sutton wrote:
On 23/09/2023 08:50, Lorenzo Sutton wrote:
I Will,

On 22/09/2023 21:35, Will Godfrey wrote:
First off I don't know if this is down to Rosegarden or aplaymidi

If I set program change to patch number 122 in a Rosegarden track
Yoshimi responds to by loading the appropriate patch.
If I then export that track as a MIDI file and run that via aplaymidi connected
to Yoshimi, it's ignored. Any other patch value works correctly.

...

Now if a 122 (121 counting from 0) program change is present rosegarden outputs:

[MidiFile] writeTrack(): Found controller 121.  Skipping.  This is a HACK to address BUG #1404.

This doesn't happen with other program changes... So, this is definitely a bug of rosegarden confusing a 121 program change for a controller change. I'm not sure if someone familiar with this code can look into this.

I think I found the issue. In the file:

./src/sound/MidiFile.cpp

around line 1458 essentially the check is only on the MIDI data 'catching' anything with a data1 value of 121.

Changing the condition to this where there is a check that the type of event is actually a MIDI control change seems to solve the issue:

if (
        midiEvent.getEventCode() == MIDI_CTRL_CHANGE &&
        midiEvent.getData1() == MIDI_CONTROLLER_RESET
) ...

At the moment I don't have time to open a bug report and submit the change in a fork (this is really painful with sourceforge)... I can do it in the next days.

Hope this helps.
Lorenzo


_______________________________________________
Rosegarden-user mailing list
Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-user

Reply via email to