I am making a template for controlling the Ex-800 with HAWK800 mod. I can now control all parameters, but I'd like to be able to read and dump complete patches too. When reading a patch a specific syx message is sent to the synth and the patch dump is sent back. I all works, but trouble arrises when reading the received dump. It worked as expected as long as I had implemented just the first parameters, but then lemur crashed and I think it was because of the limit of script length. I then researched if there is a way to call a script with parameters (the received syx dump) but it doesn't seem like that. Instead I made a second script that also receives syx (On MIDI, F0 - system exclusive, none, 0 to 127, 1 to 1). The second script starts reading where the first script left off. But now when I receive the sysex dump, Lemur crashes. Is it possible to do like I do? Is there some way around this? The array of sysex is 256 I think, but I read about 240.
Script 1
(On MIDI, F0 - system exclusive, none, 0 to 127, 1 to 1)
Code: Select all
decl i = 4;
DCO1_oct.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO1_wave.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO1_harmonics.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
DCO1_harm_modulation_waveform.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO1_harm_modulation_source.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO1_harm_modulation_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
DCO1_volume.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO1_mode.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO2_oct.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO2_wave.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO2_harmonics.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
DCO2_harm_modulation_waveform.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO2_harm_modulation_source.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO2_harm_modulation_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
DCO2_volume.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
i += 2;
DCO2_interval.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/12;
DCO2_detune.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/3;
Noise_level.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
i += 10;
Frequency.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/99;
Freq_keyboard_track.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
Freq_EG_Invert.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
Freq_EG_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
EG3_retrigger.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
i += 4;
Chorus.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO1_attack.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO1_decay.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO1_breakpoint.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO1_slope.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO1_sustain.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO1_release.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
i += 4;
DCO2_attack.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO2_decay.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO2_breakpoint.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO2_slope.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO2_sustain.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
DCO2_release.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
i += 4;
EG3_attack.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
EG3_decay.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
EG3_breakpoint.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
EG3_slope.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
EG3_sustain.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
EG3_release.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/31;
i += 4;
Velocity_OP1_intensity.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/4;
Velocity_OP1_invert.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
Velocity_OP1_target.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
Velocity_OP2_intensity.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/4;
Velocity_OP2_invert.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
Velocity_OP2_target.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
Freq_velocity.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/6;
Freq_vel_resp_shape.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
(On MIDI, F0 - system exclusive, none, 0 to 127, 1 to 1)
Code: Select all
decl i = 65*2+4;
LFO1_frequency.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
LFO1_delay_timer.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
LFO1_free_runing.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
LFO1_delay_invert.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
LFO1_PWM_phase.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/62;
LFO1_LFO3_modulation_waveform.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
LFO1_LFO3_modulation_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
i += 2;
LFO2_frequency.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
LFO2_delay_timer.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
LFO2_free_runing.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
LFO2_delay_invert.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
LFO2_PWM_phase.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/62;
LFO2_LFO4_modulation_waveform.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
LFO2_LFO4_modulation_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
i += 2;
DCO_pitch_modulation_waveform.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO_pitch_modulation_source.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO_pitch_modulation_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
i += 2;
DCO_pitch_modulation_eg_invert.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
DCO_pitch_modulation_depth_eg.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
i += 2;
DCO_pitch_modulation_mode.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
VCF_freq_LFO_waveform1.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
VCF_freq_LFO_source1.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
VCF_freq_LFO_depth1.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
VCF_freq_LFO_waveform2.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
VCF_freq_LFO_source2.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
VCF_freq_LFO_depth2.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
i += 2;
Filter_mode.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
Resonance.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/99;
VCF_res_LFO_waveform.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
VCF_res_LFO_source.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
VCF_res_LFO_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
i += 2;
Res_EG_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
Res_EG_Invert.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
Aggressive_resonance.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
FM800_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/99;
FM800_LFO_waveform.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
FM800_LFO_source.selection = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
FM800_LFO_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
i += 2;
FM800_EG_depth.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
FM800_EG_Invert.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
i += 2;
SLFO3_frequency.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
SLFO3_phase.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/62;
SLFO3_free_runing.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];
SH_rate.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/99;
SLFO4_frequency.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/15;
SLFO4_phase.x = (MIDI_ARGS[i++]*16 + MIDI_ARGS[i++])/62;
SLFO4_free_runing.x = MIDI_ARGS[i++]*16 + MIDI_ARGS[i++];