From e820ce0cc4045620103da60866c462f8cafd5bcd Mon Sep 17 00:00:00 2001 From: Stephen Rigler Date: Sat, 9 May 2009 07:47:22 +0200 Subject: [PATCH] add GNX3000 chorus settings --- effects.c | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ gdigi.h | 44 +++++++++++++++- 2 files changed, 191 insertions(+), 2 deletions(-) diff --git a/effects.c b/effects.c index db9fa9a..a451d8c 100644 --- a/effects.c +++ b/effects.c @@ -293,6 +293,11 @@ static EffectValues values_m24_to_24 = { 0.0, 48.0, NULL, }; +static EffectValues values_m12_to_24 = { + /** \todo make this display properly (display range -12 to 24) */ + 0.0, 36.0, NULL, +}; + static EffectValues values_comp_ratio = { 0.0, 11.0, comp_ratio_labels, }; @@ -332,6 +337,11 @@ static EffectValues values_eq_high_freq = { 0.0, 24.0, eq_high_freq_labels, }; +static EffectValues values_200hz_to_1_5khz = { + /** \todo make this display propertly (display range 200 Hz to 1.5 kHz) */ + 0.0, 130.0, NULL, +}; + static EffectValues values_waveform = { 0.0, 2.0, wave_labels, }; @@ -341,6 +351,11 @@ static EffectValues values_synth_talk_balance = { 0.0, 198.0, NULL, }; +static EffectValues values_synth_talk_release = { + /** \todo make last value display propertly */ + 0.0, 100.0, NULL, +}; + static EffectValues values_whammy_amount = { 0.0, 15.0, whammy_labels, }; @@ -357,6 +372,11 @@ static EffectValues values_ips_scale = { 0.0, 5.0, ips_scale_labels, }; +static EffectValues values_predelay_time = { + /** \todo make this display propertly (1ms to 20ms) */ + 0.0, 19.0, NULL, +}; + static EffectValues values_delay_time = { /** \todo make this display propertly (10 msec to 5 sec) */ 0.0, 139.0, NULL, @@ -669,6 +689,111 @@ static EffectSettings noisegate_swell_settings[] = { {"Attn", NOISEGATE_ATTN, NOISEGATE_POSITION, &values_0_to_99}, }; +static EffectSettings gnx3k_chorus_settings[] = { + {"Speed", CHORUS_SPEED, CHORUSFX_POSITION, &values_0_to_99}, + {"Depth", CHORUS_DEPTH, CHORUSFX_POSITION, &values_0_to_99}, + {"Predelay", CHORUS_PREDELAY, CHORUSFX_POSITION, &values_predelay_time}, + {"Wave", CHORUS_WAVE, CHORUSFX_POSITION, &values_waveform}, + {"Balance", CHORUS_BALANCE, CHORUSFX_POSITION, &values_synth_talk_balance}, + {"Level", CHORUS_LEVEL, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_flanger_settings[] = { + {"Speed", FLANGER_SPEED, CHORUSFX_POSITION, &values_0_to_99}, + {"Depth", FLANGER_DEPTH, CHORUSFX_POSITION, &values_0_to_99}, + {"Regen", FLANGER_REGEN, CHORUSFX_POSITION, &values_0_to_99}, + {"Waveform", FLANGER_WAVE, CHORUSFX_POSITION, &values_waveform}, + {"Balance", FLANGER_BALANCE, CHORUSFX_POSITION, &values_synth_talk_balance}, + {"Mix", FLANGER_LEVEL, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_phaser_settings[] = { + {"Speed", PHASER_SPEED, CHORUSFX_POSITION, &values_0_to_99}, + {"Depth", PHASER_DEPTH, CHORUSFX_POSITION, &values_0_to_99}, + {"Regen", PHASER_REGEN, CHORUSFX_POSITION, &values_0_to_99}, + {"Waveform", PHASER_WAVE, CHORUSFX_POSITION, &values_waveform}, + {"Balance", PHASER_BALANCE, CHORUSFX_POSITION, &values_synth_talk_balance}, + {"Level", PHASER_LEVEL, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_trigflanger_settings[] = { + {"Speed", TRIG_FLANGER_SPEED, CHORUSFX_POSITION, &values_0_to_99}, + {"Sens", TRIG_FLANGER_SENS, CHORUSFX_POSITION, &values_0_to_99}, + {"Lfo Start", TRIG_FLANGER_LFO_START, CHORUSFX_POSITION, &values_0_to_99}, + {"Mix", TRIG_FLANGER_MIX, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_trigphaser_settings[] = { + {"Speed", TRIG_PHASER_SPEED, CHORUSFX_POSITION, &values_0_to_99}, + {"Sens", TRIG_PHASER_SENS, CHORUSFX_POSITION, &values_0_to_99}, + {"Lfo Start", TRIG_PHASER_LFO_START, CHORUSFX_POSITION, &values_0_to_99}, + {"Mix", TRIG_FLANGER_MIX, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_unovibe_settings[] = { + {"Chorus/Vibrato", UNOVIBE_CHORUS_VIBRATO, CHORUSFX_POSITION, &values_chorus_vibrato}, + {"Intensity", UNOVIBE_INTENSITY, CHORUSFX_POSITION, &values_0_to_99}, + {"Pedal Speed", UNOVIBE_PEDAL_SPEED, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_vibrato_settings[] = { + {"Speed", VIBRATO_SPEED, CHORUSFX_POSITION, &values_0_to_99}, + {"Depth", VIBRATO_DEPTH, CHORUSFX_POSITION, &values_0_to_99}, + {"Waveform", VIBRATO_WAVEFORM, CHORUSFX_POSITION, &values_waveform}, +}; + +static EffectSettings gnx3k_rotary_settings[] = { + {"Speed", ROTARY_SPEED, CHORUSFX_POSITION, &values_0_to_99}, + {"Depth", ROTARY_INTENSITY, CHORUSFX_POSITION, &values_0_to_99}, + {"Doppler", ROTARY_DOPPLER, CHORUSFX_POSITION, &values_0_to_99}, + {"X-Over", ROTARY_CROSSOVER, CHORUSFX_POSITION, &values_200hz_to_1_5khz}, + {"Balance", ROTARY_BALANCE, CHORUSFX_POSITION, &values_synth_talk_balance}, + {"Mix", ROTARY_MIX, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_autoya_settings[] = { + {"Speed", AUTOYA_SPEED, CHORUSFX_POSITION, &values_0_to_99}, + {"Depth", AUTOYA_DEPTH, CHORUSFX_POSITION, &values_0_to_99}, + {"Range", GNX3K_AUTOYA_RANGE, CHORUSFX_POSITION, &values_0_to_49}, + {"Balance", AUTOYA_BALANCE, CHORUSFX_POSITION, &values_synth_talk_balance}, + {"Mix", AUTOYA_MIX, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_yaya_settings[] = { + {"Pedal", YAYA_PEDAL, CHORUSFX_POSITION, &values_0_to_99}, + {"Depth", YAYA_DEPTH, CHORUSFX_POSITION, &values_0_to_99}, + {"Range", GNX3K_YAYA_RANGE, CHORUSFX_POSITION, &values_0_to_49}, + {"Balance", YAYA_BALANCE, CHORUSFX_POSITION, &values_synth_talk_balance}, + {"Mix", YAYA_MIX, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_synthtalk_settings[] = { + {"Attack", SYNTH_TALK_ATTACK, CHORUSFX_POSITION, &values_0_to_99}, + {"Release", GNX3K_SYNTH_TALK_RELEASE, CHORUSFX_POSITION, &values_synth_talk_release}, + {"Sens", SYNTH_TALK_SENS, CHORUSFX_POSITION, &values_0_to_99}, + {"Vox", SYNTH_TALK_VOX, CHORUSFX_POSITION, &values_0_to_99}, + {"Balance", SYNTH_TALK_BALANCE, CHORUSFX_POSITION, &values_synth_talk_balance}, +}; + +static EffectSettings gnx3k_envelope_settings[] = { + {"Sensitivity", ENVELOPE_SENSITIVITY, CHORUSFX_POSITION, &values_0_to_99}, + {"Range", ENVELOPE_RANGE, CHORUSFX_POSITION, &values_0_to_99}, + {"Balance", ENVELOPE_BALANCE, CHORUSFX_POSITION, &values_synth_talk_balance}, + {"Mix", ENVELOPE_MIX, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_mod_detune_settings[] = { + {"Shift Amount", DETUNE_AMOUNT, CHORUSFX_POSITION, &values_m24_to_24}, + {"Balance", DETUNE_BALANCE, CHORUSFX_POSITION, &values_synth_talk_balance}, + {"Level", DETUNE_LEVEL, CHORUSFX_POSITION, &values_0_to_99}, +}; + +static EffectSettings gnx3k_mod_pitch_settings[] = { + {"Shift Amount", PITCH_AMOUNT, CHORUSFX_POSITION, &values_m12_to_24}, + {"Balance", PITCH_BALANCE, CHORUSFX_POSITION, &values_synth_talk_balance}, + {"Level", GNX3K_PITCH_LEVEL, CHORUSFX_POSITION, &values_0_to_99}, +}; + static EffectSettings chorusfx_ce_settings[] = { {"Speed", CHORUS_SPEED, CHORUSFX_POSITION, &values_0_to_99}, {"Depth", CHORUS_DEPTH, CHORUSFX_POSITION, &values_0_to_99}, @@ -1081,6 +1206,25 @@ static EffectGroup noisegate_group[] = { {NOISEGATE_SWELL, "Swell", NOISEGATE_TYPE, NOISEGATE_POSITION, noisegate_swell_settings, G_N_ELEMENTS(noisegate_swell_settings)}, }; +static EffectGroup gnx3k_chorusfx_group[] = { + {GNX3K_MOD_TYPE_CHORUS, "Chorus", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_chorus_settings, G_N_ELEMENTS(gnx3k_chorus_settings)}, + {GNX3K_MOD_TYPE_FLANGER, "Flanger", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_flanger_settings, G_N_ELEMENTS(gnx3k_flanger_settings)}, + {GNX3K_MOD_TYPE_PHASER, "Phaser", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_phaser_settings, G_N_ELEMENTS(gnx3k_phaser_settings)}, + {GNX3K_MOD_TYPE_TRIGFLANGER, "Triggered Flanger", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_trigflanger_settings, G_N_ELEMENTS(gnx3k_trigflanger_settings)}, + {GNX3K_MOD_TYPE_TRIGPHASER, "Triggered Phaser", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_trigphaser_settings, G_N_ELEMENTS(gnx3k_trigphaser_settings)}, + {GNX3K_MOD_TYPE_UNOVIBE, "Unovibe", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_unovibe_settings, G_N_ELEMENTS(gnx3k_unovibe_settings)}, + {GNX3K_MOD_TYPE_TREMOLO, "Tremolo", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_tremolo_settings, G_N_ELEMENTS(chorusfx_tremolo_settings)}, + {GNX3K_MOD_TYPE_PANNER, "Panner", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_panner_settings, G_N_ELEMENTS(chorusfx_panner_settings)}, + {GNX3K_MOD_TYPE_VIBRATO, "Vibrato", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_vibrato_settings, G_N_ELEMENTS(gnx3k_vibrato_settings)}, + {GNX3K_MOD_TYPE_ROTARY, "Rotary", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_rotary_settings, G_N_ELEMENTS(gnx3k_rotary_settings)}, + {GNX3K_MOD_TYPE_AUTOYA, "Auto Ya", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_autoya_settings, G_N_ELEMENTS(gnx3k_autoya_settings)}, + {GNX3K_MOD_TYPE_YAYA, "Ya Ya", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_yaya_settings, G_N_ELEMENTS(gnx3k_yaya_settings)}, + {GNX3K_MOD_TYPE_SYNTHTALK, "Synthtalk", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_synthtalk_settings, G_N_ELEMENTS(gnx3k_synthtalk_settings)}, + {GNX3K_MOD_TYPE_ENVELOPE, "Envelope", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_envelope_settings, G_N_ELEMENTS(gnx3k_envelope_settings)}, + {GNX3K_MOD_TYPE_DETUNE, "Detune", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_mod_detune_settings, G_N_ELEMENTS(gnx3k_mod_detune_settings)}, + {GNX3K_MOD_TYPE_PITCH, "Pitch", CHORUSFX_TYPE, CHORUSFX_POSITION, gnx3k_mod_pitch_settings, G_N_ELEMENTS(gnx3k_mod_pitch_settings)}, +}; + static EffectGroup rp250_chorusfx_group[] = { {CHORUS_TYPE_CE, "CE Chorus", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_ce_settings, G_N_ELEMENTS(chorusfx_ce_settings)}, {CHORUS_TYPE_DUAL, "Dual Chorus", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_dual_settings, G_N_ELEMENTS(chorusfx_dual_settings)}, @@ -1427,6 +1571,10 @@ static Effect noisegate_effect[] = { {NULL, NOISEGATE_ON_OFF, NOISEGATE_POSITION, noisegate_group, G_N_ELEMENTS(noisegate_group)}, }; +static Effect gnx3k_chorusfx_effect[] = { + {NULL, CHORUSFX_ON_OFF, CHORUSFX_POSITION, gnx3k_chorusfx_group, G_N_ELEMENTS(gnx3k_chorusfx_group)}, +}; + static Effect rp250_chorusfx_effect[] = { {NULL, CHORUSFX_ON_OFF, CHORUSFX_POSITION, rp250_chorusfx_group, G_N_ELEMENTS(rp250_chorusfx_group)}, }; @@ -1502,6 +1650,7 @@ static EffectList gnx3000_effects[] = { {"Compressor", gnx3k_comp_effect, G_N_ELEMENTS(gnx3k_comp_effect)}, {"Stompbox", gnx3k_dist_effect, G_N_ELEMENTS(gnx3k_dist_effect)}, {"Noisegate", gnx3k_noisegate_effect, G_N_ELEMENTS(gnx3k_noisegate_effect)}, + {"Chorus/Mod", gnx3k_chorusfx_effect, G_N_ELEMENTS(gnx3k_chorusfx_effect)}, }; static Banks rp_banks[] = { diff --git a/gdigi.h b/gdigi.h index 62ec793..fae2ec1 100644 --- a/gdigi.h +++ b/gdigi.h @@ -52,7 +52,6 @@ enum { #define GNX3K_WHAM_TYPE 768 #define GNX3K_WHAM_ENABLE 769 #define GNX3K_WHAM_POSITION 5 - #define GNX3K_DETUNE_AMOUNT 1670 #define GNX3K_PITCH_AMOUNT 1732 #define GNX3K_PITCH_LEVEL 1731 @@ -342,6 +341,25 @@ enum { #define NOISEGATE_RELEASE 713 #define NOISEGATE_ATTN 714 +enum { + GNX3K_MOD_TYPE_CHORUS = 857, + GNX3K_MOD_TYPE_FLANGER = 858, + GNX3K_MOD_TYPE_TRIGFLANGER = 859, + GNX3K_MOD_TYPE_PHASER = 860, + GNX3K_MOD_TYPE_TRIGPHASER = 861, + GNX3K_MOD_TYPE_TREMOLO = 862, + GNX3K_MOD_TYPE_PANNER = 863, + GNX3K_MOD_TYPE_VIBRATO = 864, + GNX3K_MOD_TYPE_ROTARY = 865, + GNX3K_MOD_TYPE_AUTOYA = 866, + GNX3K_MOD_TYPE_YAYA = 867, + GNX3K_MOD_TYPE_SYNTHTALK = 868, + GNX3K_MOD_TYPE_ENVELOPE = 869, + GNX3K_MOD_TYPE_DETUNE = 870, + GNX3K_MOD_TYPE_PITCH = 871, + GNX3K_MOD_TYPE_UNOVIBE = 880, +}; + enum { CHORUS_TYPE_CE = 0x37B, CHORUS_TYPE_TC = 0x37C, @@ -386,22 +404,26 @@ enum { #define CHORUS_SPEED 837 #define CHORUS_DEPTH 838 +#define CHORUS_PREDELAY 839 #define CHORUS_WIDTH 848 #define CHORUS_INTENSITY 849 #define CHORUS_LEVEL 836 #define CHORUS_WAVE 840 +#define CHORUS_BALANCE 841 #define FLANGER_SPEED 902 #define FLANGER_DEPTH 903 #define FLANGER_REGEN 904 #define FLANGER_LEVEL 901 #define FLANGER_WAVE 905 +#define FLANGER_BALANCE 906 #define TRIG_FLANGER_SPEED 1030 #define TRIG_FLANGER_SENS 1031 #define TRIG_FLANGER_LFO_START 1028 +#define TRIG_FLANGER_MIX 1029 #define TRIG_FLANGER_LEVEL 1032 #define MXR_FLANGER_WIDTH 914 @@ -419,10 +441,12 @@ enum { #define PHASER_REGEN 966 #define PHASER_LEVEL 965 #define PHASER_WAVE 967 +#define PHASER_BALANCE 968 #define TRIG_PHASER_SPEED 1094 #define TRIG_PHASER_SENS 1095 #define TRIG_PHASER_LFO_START 1092 +#define TRIG_PHASER_MIX 1093 #define TRIG_PHASER_LEVEL 1096 #define MX_PHASER_INTENSITY 976 @@ -432,11 +456,14 @@ enum { #define VIBRATO_SPEED 1284 #define VIBRATO_DEPTH 1285 +#define VIBRATO_WAVEFORM 1286 #define ROTARY_SPEED 1346 #define ROTARY_INTENSITY 1348 +#define ROTARY_MIX 1349 #define ROTARY_DOPPLER 1350 #define ROTARY_CROSSOVER 1351 +#define ROTARY_BALANCE 1352 #define VIBROPAN_SPEED 1314 #define VIBROPAN_DEPTH 1315 @@ -456,19 +483,30 @@ enum { #define PANNER_DEPTH 1219 #define PANNER_WAVE 1221 +#define ENVELOPE_MIX 1604 #define ENVELOPE_SENSITIVITY 1606 #define ENVELOPE_RANGE 1605 +#define ENVELOPE_BALANCE 1607 #define ENVELOPE_BLEND 1608 +#define GNX3K_AUTOYA_RANGE 1476 +#define AUTOYA_MIX 1477 #define AUTOYA_SPEED 1478 +#define AUTOYA_DEPTH 1479 +#define AUTOYA_BALANCE 1481 #define AUTOYA_INTENSITY 1482 #define AUTOYA_RANGE 1483 #define YAYA_PEDAL 1410 +#define GNX3K_YAYA_RANGE 1412 +#define YAYA_MIX 1413 +#define YAYA_DEPTH 1414 +#define YAYA_BALANCE 1416 #define YAYA_INTENSITY 1417 #define YAYA_RANGE 1418 #define SYNTH_TALK_ATTACK 1542 +#define GNX3K_SYNTH_TALK_RELEASE 1543 #define SYNTH_TALK_RELEASE 1547 #define SYNTH_TALK_SENS 1544 #define SYNTH_TALK_VOX 1540 @@ -485,10 +523,12 @@ enum { #define WHAMMY_MIX 1796 #define PITCH_AMOUNT 1730 +#define PITCH_BALANCE 1733 #define PITCH_MIX 1745 -#define DETUNE_AMOUNT 1668 #define DETUNE_LEVEL 1667 +#define DETUNE_AMOUNT 1668 +#define DETUNE_BALANCE 1669 #define IPS_SHIFT_AMOUNT 2754 #define IPS_KEY 2756