@@ -701,53 +701,18 @@ static void midi_remap_channel_sysex(const u8* data, u16 length)
701
701
midi_remap_channel (data [0 ], data [1 ]);
702
702
}
703
703
704
- static void send_preset_data (u8 type , u8 program , const FmPreset * preset )
704
+ static void send_preset_dump (u8 context , u8 command , const FmPreset * preset )
705
705
{
706
706
u8 sysexData [4 + 2 + 4 + (MAX_FM_OPERATORS * 11 )];
707
707
u16 index = 0 ;
708
708
709
709
sysexData [index ++ ] = SYSEX_MANU_EXTENDED ;
710
710
sysexData [index ++ ] = SYSEX_MANU_REGION ;
711
711
sysexData [index ++ ] = SYSEX_MANU_ID ;
712
- sysexData [index ++ ] = SYSEX_COMMAND_PRESET_DATA ;
712
+ sysexData [index ++ ] = command ;
713
713
714
- sysexData [index ++ ] = type ;
715
- sysexData [index ++ ] = program ;
716
-
717
- sysexData [index ++ ] = preset -> algorithm ;
718
- sysexData [index ++ ] = preset -> feedback ;
719
- sysexData [index ++ ] = preset -> ams ;
720
- sysexData [index ++ ] = preset -> fms ;
721
-
722
- for (u8 i = 0 ; i < MAX_FM_OPERATORS ; i ++ ) {
723
- sysexData [index ++ ] = preset -> operators [i ].multiple ;
724
- sysexData [index ++ ] = preset -> operators [i ].detune ;
725
- sysexData [index ++ ] = preset -> operators [i ].attackRate ;
726
- sysexData [index ++ ] = preset -> operators [i ].rateScaling ;
727
- sysexData [index ++ ] = preset -> operators [i ].decayRate ;
728
- sysexData [index ++ ] = preset -> operators [i ].amplitudeModulation ;
729
- sysexData [index ++ ] = preset -> operators [i ].sustainLevel ;
730
- sysexData [index ++ ] = preset -> operators [i ].sustainRate ;
731
- sysexData [index ++ ] = preset -> operators [i ].releaseRate ;
732
- sysexData [index ++ ] = preset -> operators [i ].totalLevel ;
733
- sysexData [index ++ ] = preset -> operators [i ].ssgEg ;
734
- }
735
-
736
- midi_tx_send_sysex (sysexData , index );
737
- }
738
-
739
- static void send_channel_data (u8 type , u8 midiChannel , const FmPreset * preset )
740
- {
741
- u8 sysexData [4 + 2 + 4 + (MAX_FM_OPERATORS * 11 )];
742
- u16 index = 0 ;
743
-
744
- sysexData [index ++ ] = SYSEX_MANU_EXTENDED ;
745
- sysexData [index ++ ] = SYSEX_MANU_REGION ;
746
- sysexData [index ++ ] = SYSEX_MANU_ID ;
747
- sysexData [index ++ ] = SYSEX_COMMAND_CHANNEL_DATA ;
748
-
749
- sysexData [index ++ ] = type ;
750
- sysexData [index ++ ] = midiChannel ;
714
+ sysexData [index ++ ] = STORE_PROGRAM_TYPE_FM ;
715
+ sysexData [index ++ ] = context ;
751
716
752
717
sysexData [index ++ ] = preset -> algorithm ;
753
718
sysexData [index ++ ] = preset -> feedback ;
@@ -783,9 +748,9 @@ static void dump_channel_request(const u8* data, u16 length)
783
748
log_warn ("Ch %d: No FM channel assigned" , midiChannel + 1 );
784
749
return ;
785
750
}
786
- FmPreset currentPreset ;
787
- synth_extract_preset (devChan -> num , & currentPreset );
788
- send_channel_data ( type , midiChannel , & currentPreset );
751
+ FmPreset preset ;
752
+ synth_extract_preset (devChan -> num , & preset );
753
+ send_preset_dump ( midiChannel , SYSEX_COMMAND_CHANNEL_DATA , & preset );
789
754
log_info ("Ch %d: FM %d dumped" , midiChannel + 1 , devChan -> num );
790
755
break ;
791
756
}
@@ -804,7 +769,7 @@ static void dump_preset_request(const u8* data, u16 length)
804
769
case STORE_PROGRAM_TYPE_FM : {
805
770
const FmPreset * preset = midi_fm_get_stored_preset (program );
806
771
if (preset != NULL ) {
807
- send_preset_data ( type , program , preset );
772
+ send_preset_dump ( program , SYSEX_COMMAND_PRESET_DATA , preset );
808
773
log_info ("Prg %d: FM preset dumped" , program );
809
774
} else {
810
775
log_warn ("Prg %d: No FM preset to dump" , program );
0 commit comments