diff --git a/effects.c b/effects.c index 414b99b..e448684 100644 --- a/effects.c +++ b/effects.c @@ -301,11 +301,36 @@ static EffectValues values_delay_time = { 0.0, 139.0, NULL, }; +static EffectValues values_delay_time_0_760 = { + /** \todo make this display propertly */ + 0.0, 760.0, NULL, +}; + +static EffectValues values_delay_time_0_4650 = { + /** \todo make this display propertly */ + 0.0, 4650.0, NULL, +}; + +static EffectValues values_delay_time_0_4990 = { + /** \todo make this display propertly */ + 0.0, 4990.0, NULL, +}; + +static EffectValues values_delay_time_0_5000 = { + /** \todo make this display propertly */ + 0.0, 5000.0, NULL, +}; + static EffectValues values_delay_repeats = { /** \todo make last value display propertly */ 0.0, 100.0, NULL, }; +static EffectValues values_delay_repeat_rate_0_286 = { + /** \todo make this display propertly */ + 0.0, 286.0, NULL, +}; + static EffectValues values_on_off = { 0.0, 1.0, on_off_labels, }; @@ -640,6 +665,61 @@ static EffectSettings delay_tape_settings[] = { {"Flutter", TAPE_FLUTTER, DELAY_POSITION, &values_0_to_99}, }; +static EffectSettings rp500_delay_digital_settings[] = { + {"Tap Time", DELAY_TAP_TIME, DELAY_POSITION, &values_delay_time_0_5000}, + {"Repeats", DELAY_REPEATS, DELAY_POSITION, &values_delay_repeats}, + {"Duck Thresh", DELAY_DUCK_THRESH, DELAY_POSITION, &values_0_to_99}, + {"Duck Level", DELAY_DUCK_LEVEL, DELAY_POSITION, &values_0_to_99}, + {"Level", DELAY_LEVEL, DELAY_POSITION, &values_0_to_99}, +}; + +static EffectSettings rp500_delay_analog_settings[] = { + {"Tap Time", DELAY_TAP_TIME, DELAY_POSITION, &values_delay_time_0_5000}, + {"Repeats", DELAY_REPEATS, DELAY_POSITION, &values_delay_repeats}, + {"Level", DELAY_LEVEL, DELAY_POSITION, &values_0_to_99}, +}; + +static EffectSettings rp500_delay_dm_settings[] = { + {"Repeat Rate", DELAY_REPEAT_RATE, DELAY_POSITION, &values_delay_repeat_rate_0_286}, + {"Echo", DELAY_ECHO, DELAY_POSITION, &values_0_to_99}, + {"Intensity", DELAY_INTENSITY, DELAY_POSITION, &values_0_to_99}, +}; + +static EffectSettings rp500_delay_echoplex_settings[] = { + {"Time", DELAY_TIME_0_760, DELAY_POSITION, &values_delay_time_0_760}, + {"Volume", DELAY_VOLUME, DELAY_POSITION, &values_0_to_99}, + {"Repeats", DELAY_REPEATS_0_99, DELAY_POSITION, &values_0_to_99}, +}; + +static EffectSettings rp500_delay_modulated_settings[] = { + {"Tap Time", DELAY_TAP_TIME_0_4990, DELAY_POSITION, &values_delay_time_0_4990}, + {"Repeats", DELAY_REPEATS, DELAY_POSITION, &values_delay_repeats}, + {"Level", DELAY_LEVEL, DELAY_POSITION, &values_0_to_99}, + {"Depth", DELAY_DEPTH, DELAY_POSITION, &values_0_to_99}, +}; + +static EffectSettings rp500_delay_pong_settings[] = { + {"Tap Time", DELAY_TAP_TIME, DELAY_POSITION, &values_delay_time_0_5000}, + {"Repeats", DELAY_REPEATS, DELAY_POSITION, &values_delay_repeats}, + {"Duck Thresh", DELAY_DUCK_THRESH, DELAY_POSITION, &values_0_to_99}, + {"Duck Level", DELAY_DUCK_LEVEL, DELAY_POSITION, &values_0_to_99}, + {"Level", DELAY_LEVEL, DELAY_POSITION, &values_0_to_99}, +}; + +static EffectSettings rp500_delay_reverse_settings[] = { + {"Time", DELAY_TIME_0_4650, DELAY_POSITION, &values_delay_time_0_4650}, + {"Repeats", DELAY_REPEATS, DELAY_POSITION, &values_delay_repeats}, + {"Mix", DELAY_MIX, DELAY_POSITION, &values_0_to_99}, +}; + +static EffectSettings rp500_delay_tape_settings[] = { + {"Tap Time", DELAY_TAP_TIME_0_4990, DELAY_POSITION, &values_delay_time_0_4990}, + {"Repeats", DELAY_REPEATS, DELAY_POSITION, &values_delay_repeats}, + {"Level", DELAY_LEVEL, DELAY_POSITION, &values_0_to_99}, + {"Tape Wow", TAPE_WOW, DELAY_POSITION, &values_0_to_99}, + {"Tape Flutter", TAPE_FLUTTER, DELAY_POSITION, &values_0_to_99}, +}; + static EffectSettings reverb_twin_settings[] = { {"Reverb", TWIN_REVERB, REVERB_POSITION, &values_0_to_99}, }; @@ -739,7 +819,7 @@ static EffectGroup chorusfx_group[] = { {CHORUS_TYPE_IPS, "IPS", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_ips_settings, G_N_ELEMENTS(chorusfx_ips_settings)}, }; -static EffectGroup delay_group[] = { +static EffectGroup rp250_delay_group[] = { {DELAY_TYPE_ANALOG, "Analog", DELAY_TYPE, DELAY_POSITION, delay_analog_settings, G_N_ELEMENTS(delay_analog_settings)}, {DELAY_TYPE_DIGITAL, "Digital", DELAY_TYPE, DELAY_POSITION, delay_digital_settings, G_N_ELEMENTS(delay_digital_settings)}, {DELAY_TYPE_MODULATED, "Modulated", DELAY_TYPE, DELAY_POSITION, delay_modulated_settings, G_N_ELEMENTS(delay_modulated_settings)}, @@ -747,6 +827,17 @@ static EffectGroup delay_group[] = { {DELAY_TYPE_TAPE, "Tape", DELAY_TYPE, DELAY_POSITION, delay_tape_settings, G_N_ELEMENTS(delay_tape_settings)}, }; +static EffectGroup rp500_delay_group[] = { + {DELAY_RP500_TYPE_DIGITAL, "Digital", DELAY_TYPE, DELAY_POSITION, rp500_delay_digital_settings, G_N_ELEMENTS(rp500_delay_digital_settings)}, + {DELAY_RP500_TYPE_ANALOG, "Analog", DELAY_TYPE, DELAY_POSITION, rp500_delay_analog_settings, G_N_ELEMENTS(rp500_delay_analog_settings)}, + {DELAY_RP500_TYPE_DM, "DM Delay", DELAY_TYPE, DELAY_POSITION, rp500_delay_dm_settings, G_N_ELEMENTS(rp500_delay_dm_settings)}, + {DELAY_RP500_TYPE_ECHOPLEX, "Echo Plex", DELAY_TYPE, DELAY_POSITION, rp500_delay_echoplex_settings, G_N_ELEMENTS(rp500_delay_echoplex_settings)}, + {DELAY_RP500_TYPE_MODULATED, "Modulated", DELAY_TYPE, DELAY_POSITION, rp500_delay_modulated_settings, G_N_ELEMENTS(rp500_delay_modulated_settings)}, + {DELAY_RP500_TYPE_PONG, "Pong", DELAY_TYPE, DELAY_POSITION, rp500_delay_pong_settings, G_N_ELEMENTS(rp500_delay_pong_settings)}, + {DELAY_RP500_TYPE_REVERSE, "Reverse", DELAY_TYPE, DELAY_POSITION, rp500_delay_reverse_settings, G_N_ELEMENTS(rp500_delay_reverse_settings)}, + {DELAY_RP500_TYPE_TAPE, "Tape", DELAY_TYPE, DELAY_POSITION, rp500_delay_tape_settings, G_N_ELEMENTS(rp500_delay_tape_settings)}, +}; + static EffectGroup reverb_group[] = { {REVERB_TYPE_TWIN, "Twin", REVERB_TYPE, REVERB_POSITION, reverb_twin_settings, G_N_ELEMENTS(reverb_twin_settings)}, {REVERB_TYPE_LEX_AMBIENCE, "Lexicon ambience", REVERB_TYPE, REVERB_POSITION, reverb_lex_ambience_settings, G_N_ELEMENTS(reverb_lex_ambience_settings)}, @@ -985,8 +1076,12 @@ static Effect chorusfx_effect[] = { {NULL, CHORUSFX_ON_OFF, CHORUSFX_POSITION, chorusfx_group, G_N_ELEMENTS(chorusfx_group)}, }; -static Effect delay_effect[] = { - {NULL, DELAY_ON_OFF, DELAY_POSITION, delay_group, G_N_ELEMENTS(delay_group)}, +static Effect rp250_delay_effect[] = { + {NULL, DELAY_ON_OFF, DELAY_POSITION, rp250_delay_group, G_N_ELEMENTS(rp250_delay_group)}, +}; + +static Effect rp500_delay_effect[] = { + {NULL, DELAY_ON_OFF, DELAY_POSITION, rp500_delay_group, G_N_ELEMENTS(rp500_delay_group)}, }; static Effect reverb_effect[] = { @@ -1019,7 +1114,7 @@ EffectList rp250_effects[] = { {"Distortion", dist_effect, G_N_ELEMENTS(dist_effect)}, {"Noisegate", noisegate_effect, G_N_ELEMENTS(noisegate_effect)}, {"Chorus/FX", chorusfx_effect, G_N_ELEMENTS(chorusfx_effect)}, - {"Delay", delay_effect, G_N_ELEMENTS(delay_effect)}, + {"Delay", rp250_delay_effect, G_N_ELEMENTS(rp250_delay_effect)}, {"Reverb", reverb_effect, G_N_ELEMENTS(reverb_effect)}, }; @@ -1033,7 +1128,7 @@ EffectList rp500_effects[] = { {"Distortion", dist_effect, G_N_ELEMENTS(dist_effect)}, {"Noisegate", noisegate_effect, G_N_ELEMENTS(noisegate_effect)}, {"Chorus/FX", chorusfx_effect, G_N_ELEMENTS(chorusfx_effect)}, - {"Delay", delay_effect, G_N_ELEMENTS(delay_effect)}, + {"Delay", rp500_delay_effect, G_N_ELEMENTS(rp500_delay_effect)}, {"Reverb", reverb_effect, G_N_ELEMENTS(reverb_effect)}, }; diff --git a/gdigi.h b/gdigi.h index 9c9cd5e..1c0d217 100644 --- a/gdigi.h +++ b/gdigi.h @@ -444,7 +444,16 @@ enum { DELAY_TYPE_DIGITAL = 1045, DELAY_TYPE_MODULATED = 1047, DELAY_TYPE_PONG = 1048, - DELAY_TYPE_TAPE = 1049 + DELAY_TYPE_TAPE = 1049, + + DELAY_RP500_TYPE_DIGITAL = 1052, + DELAY_RP500_TYPE_ANALOG = 1053, + DELAY_RP500_TYPE_DM = 1058, + DELAY_RP500_TYPE_ECHOPLEX = 1057, + DELAY_RP500_TYPE_MODULATED = 1054, + DELAY_RP500_TYPE_PONG = 1055, + DELAY_RP500_TYPE_REVERSE = 1064, + DELAY_RP500_TYPE_TAPE = 1056, }; #define DELAY_TYPE 1856 @@ -475,6 +484,22 @@ enum { #define TAPE_WOW 1891 #define TAPE_FLUTTER 1892 +#define DELAY_LEVEL 1860 +#define DELAY_REPEATS 1863 +#define DELAY_TAP_TIME 1868 +#define DELAY_DUCK_THRESH 1889 +#define DELAY_DUCK_LEVEL 1890 +#define DELAY_REPEAT_RATE 1898 +#define DELAY_ECHO 1895 +#define DELAY_INTENSITY 1896 +#define DELAY_TIME_0_760 1899 +#define DELAY_VOLUME 1893 +#define DELAY_REPEATS_0_99 1874 +#define DELAY_DEPTH 1873 +#define DELAY_TAP_TIME_0_4990 1900 +#define DELAY_MIX 1902 +#define DELAY_TIME_0_4650 1901 + enum { REVERB_TYPE_TWIN = 1146, REVERB_TYPE_LEX_AMBIENCE = 1150,