Re: [Rosegarden-user] Weird MIDI bug
Lorenzo Sutton <[email protected]>
| Newsgroups | gmane.comp.audio.rosegarden.devel,gmane.comp.audio.rosegarden.user |
|---|---|
| Message-ID | <[email protected]> |
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-devel mailing list [email protected] - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-devel