Skip to content

Commit ed79528

Browse files
committed
When setting pan on note, if pan is undefined, set it to center
1 parent 7df536c commit ed79528

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

fm_midi_driver.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ void fm_midi_driver_note_on(struct fm_driver *driver, int channel, uint8_t op_ma
8787
midi_track_write_rpn_msb(&mididrv->midi_file->tracks[channel + 1], mididrv->channels[channel].ticks, channel, 0, 32); // Pitch Bend Range
8888
mididrv->channels[channel].ticks = 0;
8989

90+
if (mididrv->channels[channel].midi_pan == -1) mididrv->channels[channel].midi_pan = 64;
9091
midi_track_write_control_change(&mididrv->midi_file->tracks[channel + 1], mididrv->channels[channel].ticks, channel, 10, mididrv->channels[channel].midi_pan); // prevent VOPMex from forgetting panning when skipping through the song.
9192
mididrv->channels[channel].ticks = 0;
9293

@@ -110,8 +111,10 @@ void fm_midi_driver_note_on(struct fm_driver *driver, int channel, uint8_t op_ma
110111
//}
111112

112113
for (int i=0; i<4; i++){ // ensure VOPMex doesn't discard operator volume after a PC.
113-
midi_track_write_control_change(&mididrv->midi_file->tracks[channel + 1], mididrv->channels[channel].ticks, channel, 16 + i, mididrv->channels[channel].midi_vol[i]);
114-
mididrv->channels[channel].ticks = 0;
114+
if (mididrv->channels[channel].midi_vol[i] != -1) {
115+
midi_track_write_control_change(&mididrv->midi_file->tracks[channel + 1], mididrv->channels[channel].ticks, channel, 16 + i, mididrv->channels[channel].midi_vol[i]);
116+
mididrv->channels[channel].ticks = 0;
117+
}
115118
}
116119

117120
midi_track_write_note_on(&mididrv->midi_file->tracks[channel + 1], mididrv->channels[channel].ticks, channel, midi_note, 127);

0 commit comments

Comments
 (0)