summaryrefslogtreecommitdiff
path: root/effects.c
diff options
context:
space:
mode:
authorAndrej Shadura <andrew.shadura@collabora.co.uk>2021-10-07 16:12:10 +0200
committerAndrej Shadura <andrew.shadura@collabora.co.uk>2021-10-07 16:12:10 +0200
commit45ee5d246b838240fce51e3735188ea8f88acf27 (patch)
treed3b48fd7eb44ee6d59551e5312aae7f797bc2900 /effects.c
parent314596035337348abbc934d96e4d83d4398f64f1 (diff)
Import Upstream version 0.4.0
Diffstat (limited to 'effects.c')
-rw-r--r--effects.c558
1 files changed, 435 insertions, 123 deletions
diff --git a/effects.c b/effects.c
index 8dccedf..134920c 100644
--- a/effects.c
+++ b/effects.c
@@ -15,6 +15,7 @@
*/
#include "gdigi.h"
+#include "gui.h"
#include "effects.h"
#include "gdigi_xml.h"
@@ -305,6 +306,14 @@ static EffectValues values_0_to_99 = {
.min = 0.0, .max = 99.0, .type = VALUE_TYPE_PLAIN,
};
+static EffectValues values_0_to_255 = {
+ .min = 0.0, .max = 255.0, .type = VALUE_TYPE_PLAIN,
+};
+
+static EffectValues values_0_to_29 = {
+ .min = 0.0, .max = 29.0, .type = VALUE_TYPE_PLAIN,
+};
+
static EffectValues values_1_to_4 = {
.min = 0.0, .max = 3.0,
.type = VALUE_TYPE_OFFSET,
@@ -554,6 +563,10 @@ EffectValues values_on_off = {
.labels = on_off_labels,
};
+EffectValues values_posid = {
+ .type = VALUE_TYPE_POSID,
+};
+
static EffectValues values_odd_even = {
.min = 0.0, .max = 1.0,
.type = VALUE_TYPE_LABEL,
@@ -579,74 +592,74 @@ static EffectValues values_loose_tight = {
};
static EffectValues values_pickup_type = {
- .min = 0.0, .max = 1.0,
+ .min = 65.0, .max = 66.0,
.type = VALUE_TYPE_LABEL,
.labels = pickup_type_labels,
};
static EffectValues values_comp_type = {
- .min = 0.0, .max = 1.0,
+ .min = 195.0, .max = 197.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_dist_type = {
- .min = 0.0, .max = 24.0,
+ .min = 1280.0, .max = 1302.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_amp_type = {
- .min = 0.0, .max = 1.0,
+ .min = 307.0, .max = 351.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_cab_type = {
- .min = 0.0, .max = 19.0,
+ .min = 570.0, .max = 627.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_gate_type = {
- .min = 0.0, .max = 1.0,
+ .min = 768.0, .max = 769.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_mod_type = {
- .min = 0.0, .max = 19.0,
+ .min = 862.0, .max = 1347.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_pre_post = {
- .min = 0.0, .max = 15.0,
+ .min = 1543.0, .max = 1544.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_delay_type = {
- .min = 0.0, .max = 15.0,
+ .min = 1027.0, .max = 1066.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_reverb_type = {
- .min = 0.0, .max = 14.0,
+ .min = 1107.0, .max = 1151.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_wah_type = {
- .min = 0.0, .max = 1.0,
+ .min = 129.0, .max = 134.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_exp_assign = {
- .min = 0.0, .max = 1.0,
- .type = VALUE_TYPE_LABEL,
+ .min = 0.0, .max = 0x7fffffff,
+ .type = VALUE_TYPE_POSID,
};
static EffectValues values_vswitch_pedal_assign = {
- .min = 0.0, .max = 1.0,
- .type = VALUE_TYPE_LABEL,
+ .min = 0.0, .max = 0x7fffffff,
+ .type = VALUE_TYPE_POSID,
};
static EffectValues values_vswitch_assign = {
- .min = 0.0, .max = 1.0,
- .type = VALUE_TYPE_LABEL,
+ .min = 0.0, .max = 0x7fffffff,
+ .type = VALUE_TYPE_POSID,
};
static EffectValues values_vswitch_type = {
@@ -655,8 +668,8 @@ static EffectValues values_vswitch_type = {
};
static EffectValues values_lfo_assign = {
- .min = 0.0, .max = 1.0,
- .type = VALUE_TYPE_LABEL,
+ .min = 0.0, .max = 0x7fffffff,
+ .type = VALUE_TYPE_POSID,
};
static EffectValues values_lfo_none = {
@@ -667,18 +680,18 @@ static EffectValues values_lfo_none = {
static EffectValues values_lfo_speed_extra = {
.min = 95.0, .max = 185.0,
.type = VALUE_TYPE_PLAIN | VALUE_TYPE_OFFSET | VALUE_TYPE_STEP | VALUE_TYPE_DECIMAL,
- .offset = 5.0, .step = 0.1, .decimal = 1, .suffix = "Hz",
+ .offset = -85.0, .step = 0.1, .decimal = 1, .suffix = "Hz",
};
static EffectValues values_lfo_speed = {
.min = 0.0, .max = 94.0,
.type = VALUE_TYPE_PLAIN | VALUE_TYPE_OFFSET | VALUE_TYPE_STEP | VALUE_TYPE_DECIMAL | VALUE_TYPE_EXTRA | VALUE_TYPE_SUFFIX,
- .offset = 5, .step = 0.01, .decimal = 1, .suffix = "Hz",
+ .offset = 5, .step = 0.01, .decimal = 2, .suffix = "Hz",
.extra = &values_lfo_speed_extra,
};
static EffectValues values_eq_type = {
- .min = 0.0, .max = 3.0,
+ .min = 1472.0, .max = 1475.0,
.type = VALUE_TYPE_LABEL,
};
@@ -688,12 +701,12 @@ static EffectValues values_lfo_waveform = {
};
static EffectValues values_tone_lib_type= {
- .min = 0.0, .max = 31.0,
+ .min = 1792.0, .max = 1822.0,
.type = VALUE_TYPE_LABEL,
};
static EffectValues values_fx_lib_type= {
- .min = 0.0, .max = 31.0,
+ .min = 1856.0, .max = 1866.0,
.type = VALUE_TYPE_LABEL,
};
@@ -708,9 +721,16 @@ static EffectValues values_rp_mix = {
.min = 0.0, .max = 100.0, .type = VALUE_TYPE_PLAIN,
};
-static EffectSettings usb_settings[] = {
- {"USB/RP Mix", USB_AUDIO_PLAYBACK_MIX, USB_POSITION, &values_rp_mix},
- {"USB Level", USB_AUDIO_LEVEL, USB_POSITION, &values_m12_to_24},
+static EffectSettings global_settings[] = {
+ {"USB/RP Mix", USB_AUDIO_PLAYBACK_MIX, GLOBAL_POSITION, &values_rp_mix},
+ {"USB Level", USB_AUDIO_LEVEL, GLOBAL_POSITION, &values_m12_to_24},
+#if defined(DEVELOPMENT_MODE)
+ {"GUI Mode", GUI_MODE_ON_OFF, GLOBAL_POSITION, &values_on_off},
+#endif /* DEVELOPMENT_MODE */
+ {"Tuning Reference", TUNING_REFERENCE, GLOBAL_POSITION, &values_0_to_29},
+ {"Pedal Position", EXP_PEDAL_LEVEL, GLOBAL_POSITION, &values_0_to_255},
+ {"Stomp", STOMP_MODE, GLOBAL_POSITION, &values_on_off},
+ {"Wah Pedal Position", WAH_PEDAL_POSITION, WAH_POSITION, &values_0_to_99},
};
static EffectSettings misc_settings[] = {
@@ -942,17 +962,17 @@ static EffectSettings dist_mp_settings[] = {
};
static EffectSettings rp250_amp_settings[] = {
- {"Gain", AMP_GAIN, AMP_POSITION, &values_0_to_99},
- {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99},
+ {"Gain", AMP_GAIN, AMP_A_POSITION, &values_0_to_99},
+ {"Level", AMP_LEVEL, AMP_A_POSITION, &values_0_to_99},
};
static EffectSettings rp250_amp_settings2[] = {
- {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99},
+ {"Level", AMP_LEVEL, AMP_A_POSITION, &values_0_to_99},
};
static EffectSettings rp355_amp_settings_A[] = {
- {"Gain", AMP_GAIN, AMP_POSITION, &values_0_to_99},
- {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99},
+ {"Gain", AMP_GAIN, AMP_A_POSITION, &values_0_to_99},
+ {"Level", AMP_LEVEL, AMP_A_POSITION, &values_0_to_99},
};
static EffectSettings rp355_amp_settings_B[] = {
@@ -961,7 +981,7 @@ static EffectSettings rp355_amp_settings_B[] = {
};
static EffectSettings rp355_amp_settings2_A[] = {
- {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99},
+ {"Level", AMP_LEVEL, AMP_A_POSITION, &values_0_to_99},
};
static EffectSettings rp355_amp_settings2_B[] = {
@@ -969,22 +989,22 @@ static EffectSettings rp355_amp_settings2_B[] = {
};
static EffectSettings rp500_amp_settings[] = {
- {"Gain", AMP_GAIN, AMP_POSITION, &values_0_to_99},
- {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99},
- {"Bass", AMP_BASS, AMP_POSITION, &values_1_to_10_step_0p1},
- {"Mid", AMP_MID, AMP_POSITION, &values_1_to_10_step_0p1},
- {"Treble", AMP_TREBLE, AMP_POSITION, &values_1_to_10_step_0p1},
+ {"Gain", AMP_GAIN, AMP_A_POSITION, &values_0_to_99},
+ {"Level", AMP_LEVEL, AMP_A_POSITION, &values_0_to_99},
+ {"Bass", AMP_BASS, AMP_A_POSITION, &values_1_to_10_step_0p1},
+ {"Mid", AMP_MID, AMP_A_POSITION, &values_1_to_10_step_0p1},
+ {"Treble", AMP_TREBLE, AMP_A_POSITION, &values_1_to_10_step_0p1},
};
static EffectSettings rp500_amp_settings2[] = {
- {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99},
- {"Bass", AMP_BASS, AMP_POSITION, &values_1_to_10_step_0p1},
- {"Mid", AMP_MID, AMP_POSITION, &values_1_to_10_step_0p1},
- {"Treble", AMP_TREBLE, AMP_POSITION, &values_1_to_10_step_0p1},
+ {"Level", AMP_LEVEL, AMP_A_POSITION, &values_0_to_99},
+ {"Bass", AMP_BASS, AMP_A_POSITION, &values_1_to_10_step_0p1},
+ {"Mid", AMP_MID, AMP_A_POSITION, &values_1_to_10_step_0p1},
+ {"Treble", AMP_TREBLE, AMP_A_POSITION, &values_1_to_10_step_0p1},
};
static EffectSettings rp500_amp_settings3[] = {
- {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99},
+ {"Level", AMP_LEVEL, AMP_A_POSITION, &values_0_to_99},
};
static EffectSettings gnx3k_ch1_cab_tuning_settings[] = {
@@ -996,15 +1016,15 @@ static EffectSettings gnx3k_ch2_cab_tuning_settings[] = {
};
static EffectSettings gnx3k_ch1_amp_eq_settings[] = {
- {"Gain", AMP_GAIN, AMP_POSITION, &values_0_to_99},
- {"Bass Freq", AMP_BASS_FREQ, AMP_POSITION, &values_eq_bass_hz},
- {"Bass Level", AMP_BASS_LEVEL, AMP_POSITION, &values_eq_db},
- {"Mid Freq", AMP_MID_FREQ, AMP_POSITION, &values_eq_mid_hz},
- {"Mid Level", AMP_MID_LEVEL, AMP_POSITION, &values_eq_db},
- {"Treb Freq", AMP_TREBLE_FREQ, AMP_POSITION, &values_eq_treb_hz},
- {"Treb Level", AMP_TREBLE_LEVEL, AMP_POSITION, &values_eq_db},
- {"Presence", AMP_PRESENCE, AMP_POSITION, &values_eq_db},
- {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99},
+ {"Gain", AMP_GAIN, AMP_A_POSITION, &values_0_to_99},
+ {"Bass Freq", AMP_BASS_FREQ, AMP_A_POSITION, &values_eq_bass_hz},
+ {"Bass Level", AMP_BASS_LEVEL, AMP_A_POSITION, &values_eq_db},
+ {"Mid Freq", AMP_MID_FREQ, AMP_A_POSITION, &values_eq_mid_hz},
+ {"Mid Level", AMP_MID_LEVEL, AMP_A_POSITION, &values_eq_db},
+ {"Treb Freq", AMP_TREBLE_FREQ, AMP_A_POSITION, &values_eq_treb_hz},
+ {"Treb Level", AMP_TREBLE_LEVEL, AMP_A_POSITION, &values_eq_db},
+ {"Presence", AMP_PRESENCE, AMP_A_POSITION, &values_eq_db},
+ {"Level", AMP_LEVEL, AMP_A_POSITION, &values_0_to_99},
};
static EffectSettings gnx3k_ch2_amp_eq_settings[] = {
@@ -1031,18 +1051,18 @@ static EffectSettings rp355_eq_settings_A[] = {
{"Bass", EQ_BASS, EQ_A_POSITION, &values_eq_db},
{"Mid", EQ_MID, EQ_A_POSITION, &values_eq_db},
{"Treble", EQ_TREB, EQ_A_POSITION, &values_eq_db},
+ {"Presence", EQ_PRESENCE, EQ_A_POSITION, &values_eq_db},
{"Mid Hz", EQ_MID_FREQ, EQ_A_POSITION, &values_eq_mid_hz},
{"Treb Hz", EQ_TREB_FREQ, EQ_A_POSITION, &values_eq_treb_hz},
- {"Presence", EQ_PRESENCE, EQ_A_POSITION, &values_eq_db},
};
static EffectSettings rp355_eq_settings_B[] = {
{"Bass", EQ_BASS, EQ_B_POSITION, &values_eq_db},
{"Mid", EQ_MID, EQ_B_POSITION, &values_eq_db},
{"Treble", EQ_TREB, EQ_B_POSITION, &values_eq_db},
+ {"Presence", EQ_PRESENCE, EQ_B_POSITION, &values_eq_db},
{"Mid Hz", EQ_MID_FREQ, EQ_B_POSITION, &values_eq_mid_hz},
{"Treb Hz", EQ_TREB_FREQ, EQ_B_POSITION, &values_eq_treb_hz},
- {"Presence", EQ_PRESENCE, EQ_B_POSITION, &values_eq_db},
};
static EffectSettings rp500_eq_settings[] = {
@@ -1069,7 +1089,7 @@ static EffectSettings noisegate_pluck_settings[] = {
};
static EffectSettings noisegate_gate_settings[] = {
- {"Treshold", NOISEGATE_GATE_TRESHOLD, NOISEGATE_POSITION, &values_0_to_99},
+ {"Threshold", NOISEGATE_GATE_TRESHOLD, NOISEGATE_POSITION, &values_0_to_99},
{"Attack", NOISEGATE_ATTACK, NOISEGATE_POSITION, &values_0_to_99},
{"Release", NOISEGATE_RELEASE, NOISEGATE_POSITION, &values_0_to_99},
{"Attn", NOISEGATE_ATTN, NOISEGATE_POSITION, &values_0_to_99},
@@ -1466,7 +1486,7 @@ static EffectSettings delay_tape_settings[] = {
{"Time", DELAY_TIME, DELAY_POSITION, &values_delay_time},
{"Level", DELAY_LEVEL, DELAY_POSITION, &values_0_to_99},
{"Repeats", DELAY_REPEATS, DELAY_POSITION, &values_delay_repeats},
- {"Wow", DELAY_TAPE_WOW, DELAY_POSITION, &values_0_to_99},
+ {"Delay Tape Wow", DELAY_TAPE_WOW, DELAY_POSITION, &values_0_to_99},
{"Flutter", DELAY_TAPE_FLUTTER, DELAY_POSITION, &values_0_to_99},
};
@@ -1527,8 +1547,8 @@ 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", DELAY_TAPE_WOW, DELAY_POSITION, &values_0_to_99},
- {"Tape Flutter", DELAY_TAPE_FLUTTER, DELAY_POSITION, &values_0_to_99},
+ {"Delay Tape Wow", DELAY_TAPE_WOW, DELAY_POSITION, &values_0_to_99},
+ {"Delay Tape Flutter", DELAY_TAPE_FLUTTER, DELAY_POSITION, &values_0_to_99},
};
static EffectSettings rp1000_delay_lo_fi_settings[] = {
@@ -1556,6 +1576,20 @@ static EffectSettings gnx3k_reverb_settings[] = {
{"Level", REVERB_LEVEL, REVERB_POSITION, &values_0_to_99},
};
+static EffectSettings lfo1_settings[] = {
+ {"Heel", LFO_MIN, LFO1_POSITION, &values_0_to_99},
+ {"Toe", LFO_MAX, LFO1_POSITION, &values_0_to_99},
+ {"Waveform", LFO_WAVEFORM, LFO1_POSITION, &values_waveform},
+ {"Speed(HZ)", LFO_SPEED, LFO1_POSITION, &values_lfo_speed},
+};
+
+static EffectSettings lfo2_settings[] = {
+ {"Heel", LFO_MIN, LFO2_POSITION, &values_0_to_99},
+ {"Toe", LFO_MAX, LFO2_POSITION, &values_0_to_99},
+ {"Waveform", LFO_WAVEFORM, LFO2_POSITION, &values_waveform},
+ {"Speed(HZ)", LFO_SPEED, LFO2_POSITION, &values_lfo_speed},
+};
+
static EffectSettings reverb_lex_settings[] = {
{"Predelay", REVERB_PREDELAY, REVERB_POSITION, &values_0_to_15},
{"Decay", REVERB_DECAY, REVERB_POSITION, &values_0_to_99},
@@ -1563,6 +1597,20 @@ static EffectSettings reverb_lex_settings[] = {
{"Level", REVERB_LEVEL, REVERB_POSITION, &values_0_to_99},
};
+static EffectSettings tone_lib_level_a_settings[] = {
+ {"Tone Effect Level", FX_LIB_LEVEL, LIB_POSITION_A, &values_0_to_99},
+ {"Tone Level 1", FX_LIB_LEVEL_MAX1, LIB_POSITION_A, &values_0_to_99},
+ {"Tone Level 2", FX_LIB_LEVEL_MAX2, LIB_POSITION_A, &values_0_to_99},
+ {"Tone Level 3", FX_LIB_LEVEL_MAX3, LIB_POSITION_A, &values_0_to_99},
+};
+
+static EffectSettings tone_lib_level_b_settings[] = {
+ {"Tone Effect Level", FX_LIB_LEVEL, LIB_POSITION_B, &values_0_to_99},
+ {"Tone Level 1", FX_LIB_LEVEL_MAX1, LIB_POSITION_B, &values_0_to_99},
+ {"Tone Level 2", FX_LIB_LEVEL_MAX2, LIB_POSITION_B, &values_0_to_99},
+ {"Tone Level 3", FX_LIB_LEVEL_MAX3, LIB_POSITION_B, &values_0_to_99},
+};
+
static EffectGroup gnx3k_wah_group[] = {
{GNX3K_WAH_TYPE_CRY, "Cry", gnx3k_wah_settings, G_N_ELEMENTS(gnx3k_wah_settings)},
{GNX3K_WAH_TYPE_BOUTIQUE, "Boutique", gnx3k_wah_settings, G_N_ELEMENTS(gnx3k_wah_settings)},
@@ -1592,8 +1640,8 @@ static EffectGroup gnx3k_amp_channel_group[] = {
};
/** \todo it's not part of Preset, but should appear in GUI */
-static EffectGroup usb_group[] = {
- {-1, NULL, usb_settings, G_N_ELEMENTS(usb_settings)},
+static EffectGroup global_group[] = {
+ {-1, NULL, global_settings, G_N_ELEMENTS(global_settings)},
};
static EffectGroup misc_group[] = {
@@ -1915,6 +1963,26 @@ static EffectGroup rp355_chorusfx_group[] = {
{CHORUS_TYPE_OCTAVER, "Octaver", chorusfx_octaver_settings, G_N_ELEMENTS(chorusfx_octaver_settings)},
};
+/*
+ * The combo boxes for the pedal assign and lfo groups are populated dynamically
+ * from the RECEIVE_MODIFIER_LINKABLE_LIST. We request this message at startup
+ * and are sent this message asynchronously whenever the selected chorus/FX
+ * effect changes.
+ */
+static EffectGroup expression_pedal_assign_group[] = {
+ { 0, "None", NULL, 0},
+};
+
+static EffectGroup rp355_lfo2_group[] = {
+ { 0, NULL, lfo2_settings, G_N_ELEMENTS(lfo2_settings)},
+ { 0, "None", NULL, 0},
+};
+
+static EffectGroup rp355_lfo1_group[] = {
+ { 0, NULL, lfo1_settings, G_N_ELEMENTS(lfo1_settings)},
+ { 0, "None", NULL, 0},
+};
+
static EffectGroup rp500_chorusfx_group[] = {
{CHORUS_TYPE_CE, "CE Chorus", chorusfx_ce_settings, G_N_ELEMENTS(chorusfx_ce_settings)},
{CHORUS_TYPE_TC, "TC Chorus", chorusfx_tc_settings, G_N_ELEMENTS(chorusfx_tc_settings)},
@@ -2603,6 +2671,7 @@ static EffectGroup gnx3k_ch2_amp_eq_group[] = {
/* LIBRARY_TONE, LIBRARY_POSITION */
static EffectGroup tone_lib_group[] = {
+ {TONE_LIB_CUSTOM, "None", NULL, -1},
{TONE_LIB_OVERDRIVE, "Overdrive", NULL, -1},
{TONE_LIB_ROCK1, "Rock 1", NULL, -1},
{TONE_LIB_ROCK2, "Rock 2", NULL, -1},
@@ -2637,6 +2706,7 @@ static EffectGroup tone_lib_group[] = {
/* LIBRARY_EFFECTS, LIBRARY_POSITION */
static EffectGroup effects_lib_group[] = {
+ {EFFECTS_LIB_CUSTOM, "None", NULL, -1},
{EFFECTS_LIB_CHORUS, "Chorus", NULL, -1},
{EFFECTS_LIB_PHASER, "Phaser", NULL, -1},
{EFFECTS_LIB_FLANGER, "Flanger", NULL, -1},
@@ -2669,6 +2739,14 @@ static EffectGroup effects_lib_group[] = {
{EFFECTS_LIB_ROTARY_TAPE, "Rotary + Tape Delay", NULL, -1},
};
+static EffectGroup tone_lib_level_a_group[] = {
+ {-1, NULL, tone_lib_level_a_settings, G_N_ELEMENTS(tone_lib_level_a_settings)},
+};
+
+static EffectGroup tone_lib_level_b_group[] = {
+ {-1, NULL, tone_lib_level_b_settings, G_N_ELEMENTS(tone_lib_level_b_settings)},
+};
+
static EffectGroup pickup_group[] = {
{PICKUP_TYPE_HB_SC, "HB>SC", NULL, -1},
{PICKUP_TYPE_SC_HB, "SC>HB", NULL, -1},
@@ -2695,6 +2773,10 @@ static Effect wah_effect[] = {
{NULL, WAH_ON_OFF, WAH_TYPE, WAH_POSITION, wah_group, G_N_ELEMENTS(wah_group)},
};
+static Effect expression_pedal_assign_effect[] = {
+ {NULL, -1, EXP_TYPE, EXP_POSITION, expression_pedal_assign_group, G_N_ELEMENTS(expression_pedal_assign_group)},
+};
+
static Effect gnx3k_whammy_effect[] = {
{NULL, GNX3K_WHAM_ENABLE, GNX3K_WHAM_TYPE, GNX3K_WHAM_POSITION, gnx3k_whammy_group, G_N_ELEMENTS(gnx3k_whammy_group)},
};
@@ -2780,8 +2862,16 @@ static Effect rp255_chorusfx_effect[] = {
};
static Effect rp355_chorusfx_effect[] = {
- {"Position",-1, CHORUSFX_PRE_POST,CHORUSFX_POSITION, pre_post_group,G_N_ELEMENTS(pre_post_group)},
{NULL, CHORUSFX_ON_OFF,CHORUSFX_TYPE, CHORUSFX_POSITION, rp355_chorusfx_group, G_N_ELEMENTS(rp355_chorusfx_group)},
+ {"Position",-1, CHORUSFX_PRE_POST,CHORUSFX_POSITION, pre_post_group,G_N_ELEMENTS(pre_post_group)},
+};
+
+static Effect rp355_lfo1_effect[] = {
+ {NULL, -1, LFO_TYPE, LFO1_POSITION, rp355_lfo1_group, G_N_ELEMENTS(rp355_lfo1_group)},
+};
+
+static Effect rp355_lfo2_effect[] = {
+ {NULL, -1, LFO_TYPE, LFO2_POSITION, rp355_lfo2_group, G_N_ELEMENTS(rp355_lfo2_group)},
};
static Effect rp500_chorusfx_effect[] = {
@@ -2823,23 +2913,23 @@ static Effect reverb_effect[] = {
};
static Effect rp150_amp_effect[] = {
- {NULL, AMP_ON_OFF, AMP_TYPE, AMP_POSITION, rp150_amp_group, G_N_ELEMENTS(rp150_amp_group)},
+ {NULL, AMP_ON_OFF, AMP_TYPE, AMP_A_POSITION, rp150_amp_group, G_N_ELEMENTS(rp150_amp_group)},
{"Cabinet", -1, AMP_CAB_TYPE, AMP_CAB_POSITION, rp150_amp_cab_group, G_N_ELEMENTS(rp150_amp_cab_group)},
};
static Effect rp155_amp_effect[] = {
- {NULL, AMP_ON_OFF, AMP_TYPE, AMP_POSITION, rp155_amp_group, G_N_ELEMENTS(rp155_amp_group)},
+ {NULL, AMP_ON_OFF, AMP_TYPE, AMP_A_POSITION, rp155_amp_group, G_N_ELEMENTS(rp155_amp_group)},
{"Cabinet", -1, AMP_CAB_TYPE, AMP_CAB_POSITION, rp150_amp_cab_group, G_N_ELEMENTS(rp150_amp_cab_group)},
};
static Effect rp250_amp_effect[] = {
- {NULL, AMP_ON_OFF, AMP_TYPE, AMP_POSITION, rp250_amp_group, G_N_ELEMENTS(rp250_amp_group)},
+ {NULL, AMP_ON_OFF, AMP_TYPE, AMP_A_POSITION, rp250_amp_group, G_N_ELEMENTS(rp250_amp_group)},
{"Cabinet", -1, AMP_CAB_TYPE, AMP_CAB_POSITION, rp250_amp_cab_group, G_N_ELEMENTS(rp250_amp_cab_group)},
};
/* same cabs as rp250, but 3 new amp models */
static Effect rp255_amp_effect[] = {
- {NULL, AMP_ON_OFF, AMP_TYPE, AMP_POSITION, rp255_amp_group, G_N_ELEMENTS(rp255_amp_group)},
+ {NULL, AMP_ON_OFF, AMP_TYPE, AMP_A_POSITION, rp255_amp_group, G_N_ELEMENTS(rp255_amp_group)},
{"Cabinet", -1, AMP_CAB_TYPE, AMP_CAB_POSITION, rp250_amp_cab_group, G_N_ELEMENTS(rp250_amp_cab_group)},
};
@@ -2848,7 +2938,7 @@ static Effect rp355_select_amp_effect[] = {
};
static Effect rp355_amp_effect_A[] = {
- {NULL, AMP_ON_OFF, AMP_TYPE, AMP_POSITION, rp355_amp_group_A, G_N_ELEMENTS(rp355_amp_group_A)},
+ {NULL, AMP_ON_OFF, AMP_TYPE, AMP_A_POSITION, rp355_amp_group_A, G_N_ELEMENTS(rp355_amp_group_A)},
{"Cabinet", -1, AMP_CAB_TYPE, AMP_CAB_POSITION, rp355_amp_cab_group, G_N_ELEMENTS(rp355_amp_cab_group)},
};
@@ -2858,19 +2948,19 @@ static Effect rp355_amp_effect_B[] = {
};
static Effect rp500_amp_effect[] = {
- {NULL, AMP_ON_OFF, AMP_TYPE, AMP_POSITION, rp500_amp_group, G_N_ELEMENTS(rp500_amp_group)},
+ {NULL, AMP_ON_OFF, AMP_TYPE, AMP_A_POSITION, rp500_amp_group, G_N_ELEMENTS(rp500_amp_group)},
{"Cabinet", -1, AMP_CAB_TYPE, AMP_CAB_POSITION, rp500_amp_cab_group, G_N_ELEMENTS(rp500_amp_cab_group)},
};
static Effect rp1000_amp_effect[] = {
{"Amp Loop", AMP_LOOP_ON_OFF, -1, AMP_LOOP_POSITION, NULL, -1},
{"Amp/Cab Bypass", AMP_BYPASS_ON_OFF, -1, AMP_BYPASS_POSITION, NULL, -1},
- {NULL, -1, AMP_TYPE, AMP_POSITION, rp1000_amp_group, G_N_ELEMENTS(rp1000_amp_group)},
+ {NULL, -1, AMP_TYPE, AMP_A_POSITION, rp1000_amp_group, G_N_ELEMENTS(rp1000_amp_group)},
{NULL, -1, AMP_CAB_TYPE, AMP_CAB_POSITION, rp1000_amp_cab_group, G_N_ELEMENTS(rp1000_amp_cab_group)},
};
static Effect gnx3k_channel_1_effect[] = {
- {"EQ Enable", AMP_EQ_ON_OFF, AMP_TYPE, AMP_POSITION, gnx3k_amp_group, G_N_ELEMENTS(gnx3k_amp_group)},
+ {"EQ Enable", AMP_EQ_ON_OFF, AMP_TYPE, AMP_A_POSITION, gnx3k_amp_group, G_N_ELEMENTS(gnx3k_amp_group)},
{NULL, -1, AMP_CAB_TYPE, AMP_CAB_POSITION, gnx3k_amp_cab_group, G_N_ELEMENTS(gnx3k_amp_cab_group)},
{NULL, -1, -1, -1, gnx3k_ch1_cab_tuning_group, G_N_ELEMENTS(gnx3k_ch1_cab_tuning_group)},
{NULL, -1, -1, -1, gnx3k_ch1_amp_eq_group, G_N_ELEMENTS(gnx3k_ch1_amp_eq_group)},
@@ -2899,6 +2989,10 @@ static Effect rp500_eq_effect[] = {
{"Enable Equalizer", EQ_ENABLE, -1, EQ_A_POSITION, rp500_eq_group, G_N_ELEMENTS(rp500_eq_group)},
};
+static Effect global_effect[] = {
+ {NULL, -1, 0, GLOBAL_POSITION, global_group, G_N_ELEMENTS(global_group)},
+};
+
static Effect pickup_misc_effect[] = {
{NULL, PICKUP_ON_OFF, PICKUP_TYPE, PICKUP_POSITION, pickup_group, G_N_ELEMENTS(pickup_group)},
{NULL, -1, PRESET_LEVEL, PRESET_POSITION, misc_group, G_N_ELEMENTS(misc_group)},
@@ -2914,6 +3008,18 @@ static Effect gnx3k_amp_channel_effect[] = {
{NULL, -1, -1, -1, gnx3k_amp_channel_group, G_N_ELEMENTS(gnx3k_amp_channel_group)},
};
+static Effect tone_lib_effect_a[] = {
+ {NULL, -1, TONE_LIB_TYPE, LIB_POSITION_A, tone_lib_group, G_N_ELEMENTS(tone_lib_group)},
+ {NULL, -1, FX_LIB_TYPE, LIB_POSITION_A, effects_lib_group, G_N_ELEMENTS(effects_lib_group)},
+ {NULL, -1, FX_LIB_LEVEL, LIB_POSITION_A, tone_lib_level_a_group, G_N_ELEMENTS(tone_lib_level_a_group)},
+};
+
+static Effect tone_lib_effect_b[] = {
+ {NULL, -1, TONE_LIB_TYPE, LIB_POSITION_B, tone_lib_group, G_N_ELEMENTS(tone_lib_group)},
+ {NULL, -1, FX_LIB_TYPE, LIB_POSITION_B, effects_lib_group, G_N_ELEMENTS(effects_lib_group)},
+ {NULL, -1, FX_LIB_LEVEL, LIB_POSITION_B, tone_lib_level_b_group, G_N_ELEMENTS(tone_lib_level_b_group)},
+};
+
/* in signal chain order */
static EffectList rp150_effects[] = {
{"Pickup", pickup_misc_effect, G_N_ELEMENTS(pickup_misc_effect)},
@@ -2952,10 +3058,12 @@ static EffectList rp250_effects[] = {
{"Delay", rp250_delay_effect, G_N_ELEMENTS(rp250_delay_effect)},
{"Reverb", reverb_effect, G_N_ELEMENTS(reverb_effect)},
{"Pickup/Misc", pickup_misc_effect, G_N_ELEMENTS(pickup_misc_effect)},
+ {"Expression Pedal", expression_pedal_assign_effect, G_N_ELEMENTS(expression_pedal_assign_effect)},
};
/* Almost like rp250, except for Amplifier and Chorus/FX */
static EffectList rp255_effects[] = {
+ {"Tone Library", tone_lib_effect_b, G_N_ELEMENTS(tone_lib_effect_b)},
{"Wah", wah_effect, G_N_ELEMENTS(wah_effect)},
{"Amplifier", rp255_amp_effect, G_N_ELEMENTS(rp255_amp_effect)},
{"Equalizer", rp250_eq_effect, G_N_ELEMENTS(rp250_eq_effect)},
@@ -2966,6 +3074,7 @@ static EffectList rp255_effects[] = {
{"Delay", rp250_delay_effect, G_N_ELEMENTS(rp250_delay_effect)},
{"Reverb", reverb_effect, G_N_ELEMENTS(reverb_effect)},
{"Pickup/Misc", pickup_misc_effect, G_N_ELEMENTS(pickup_misc_effect)},
+ {"Expression Pedal", expression_pedal_assign_effect, G_N_ELEMENTS(expression_pedal_assign_effect)},
};
static EffectList rp355_effects[] = {
@@ -2982,6 +3091,11 @@ static EffectList rp355_effects[] = {
{"Chorus/FX", rp355_chorusfx_effect, G_N_ELEMENTS(rp355_chorusfx_effect)},
{"Delay", rp355_delay_effect, G_N_ELEMENTS(rp355_delay_effect)},
{"Reverb", reverb_effect, G_N_ELEMENTS(reverb_effect)},
+ {"Pedal1 Assign", expression_pedal_assign_effect, G_N_ELEMENTS(expression_pedal_assign_effect)},
+ {"LFO1", rp355_lfo1_effect, G_N_ELEMENTS(rp355_lfo1_effect)},
+ {"LFO2", rp355_lfo2_effect, G_N_ELEMENTS(rp355_lfo2_effect)},
+ {"Global Settings", global_effect, G_N_ELEMENTS(global_effect)},
+ {"Tone Library", tone_lib_effect_a, G_N_ELEMENTS(tone_lib_effect_a)},
};
static EffectList rp500_effects[] = {
@@ -2994,6 +3108,7 @@ static EffectList rp500_effects[] = {
{"Chorus/FX", rp500_chorusfx_effect, G_N_ELEMENTS(rp500_chorusfx_effect)},
{"Delay", rp500_delay_effect, G_N_ELEMENTS(rp500_delay_effect)},
{"Reverb", reverb_effect, G_N_ELEMENTS(reverb_effect)},
+ {"Expression Pedal", expression_pedal_assign_effect, G_N_ELEMENTS(expression_pedal_assign_effect)},
};
static EffectList rp1000_effects[] = {
@@ -3006,6 +3121,7 @@ static EffectList rp1000_effects[] = {
{"Chorus/FX", rp1000_chorusfx_effect, G_N_ELEMENTS(rp1000_chorusfx_effect)},
{"Delay", rp1000_delay_effect, G_N_ELEMENTS(rp1000_delay_effect)},
{"Reverb", reverb_effect, G_N_ELEMENTS(reverb_effect)},
+ {"Expression Pedal", expression_pedal_assign_effect, G_N_ELEMENTS(expression_pedal_assign_effect)},
};
static EffectList gnx4_effects[] = {
@@ -3073,7 +3189,7 @@ static EffectPage rp255_pages[] = {
};
static EffectPage rp355_pages[] = {
- {"Effects", rp355_effects, G_N_ELEMENTS(rp355_effects), 2},
+ {"Effects", rp355_effects, G_N_ELEMENTS(rp355_effects), 3},
};
static EffectPage rp500_pages[] = {
@@ -3217,6 +3333,8 @@ static Modifier modifiers[] = {
{"Compressor Tone", COMP_TONE, COMP_POSITION, &values_0_to_99},
{"Compressor Level", COMP_LEVEL, COMP_POSITION, &values_0_to_99},
{"Compressor Attack", COMP_ATTACK, COMP_POSITION, &values_0_to_99},
+ {"Compressor Sensitivity", COMP_SENSITIVITY, COMP_POSITION, &values_0_to_99},
+ {"Compressor Output", COMP_OUTPUT, COMP_POSITION, &values_0_to_99},
{"Dist Enable", DIST_ON_OFF, DIST_POSITION, &values_on_off},
{"Dist Drive", DIST_SCREAMER_DRIVE, DIST_POSITION, &values_0_to_99},
{"Dist Tone", DIST_SCREAMER_TONE, DIST_POSITION, &values_0_to_99},
@@ -3259,13 +3377,22 @@ static Modifier modifiers[] = {
{"Dist Sustain", DIST_MP_SUSTAIN, DIST_POSITION, &values_0_to_99},
{"Dist Tone", DIST_MP_TONE, DIST_POSITION, &values_0_to_99},
{"Dist Volume", DIST_MP_VOLUME, DIST_POSITION, &values_0_to_99},
- {"Amp Channel Enable", AMP_ON_OFF, AMP_POSITION, &values_on_off},
- {"Amp Gain", AMP_GAIN, AMP_POSITION, &values_0_to_99},
- {"Amp Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99},
+ {"Amp Enable", AMP_ON_OFF, AMP_A_POSITION, &values_on_off},
+ {"Amp Gain", AMP_GAIN, AMP_A_POSITION, &values_0_to_99},
+ {"Amp Level", AMP_LEVEL, AMP_A_POSITION, &values_0_to_99},
+ {"Amp B Enable", AMP_ON_OFF, AMP_B_POSITION, &values_on_off},
+ {"Amp B Gain", AMP_GAIN, AMP_B_POSITION, &values_0_to_99},
+ {"Amp B Level", AMP_LEVEL, AMP_B_POSITION, &values_0_to_99},
{"EQ Enable", EQ_ENABLE, EQ_A_POSITION, &values_on_off},
{"EQ Bass", EQ_BASS, EQ_A_POSITION, &values_eq_db},
{"EQ Mid", EQ_MID, EQ_A_POSITION, &values_eq_db},
{"EQ Treb", EQ_TREB, EQ_A_POSITION, &values_eq_db},
+ {"EQ Presence", EQ_PRESENCE, EQ_A_POSITION, &values_eq_db},
+ {"EQ B Enable", EQ_ENABLE, EQ_B_POSITION, &values_on_off},
+ {"EQ B Bass", EQ_BASS, EQ_B_POSITION, &values_eq_db},
+ {"EQ B Mid", EQ_MID, EQ_B_POSITION, &values_eq_db},
+ {"EQ B Treb", EQ_TREB, EQ_B_POSITION, &values_eq_db},
+ {"EQ B Presence", EQ_PRESENCE, EQ_B_POSITION, &values_eq_db},
{"Gate Enable", NOISEGATE_ON_OFF, NOISEGATE_POSITION, &values_on_off},
{"Gate Pluck Sens", NOISEGATE_SWELL_SENS, NOISEGATE_POSITION, &values_0_to_99},
{"Gate Threshold", NOISEGATE_GATE_TRESHOLD, NOISEGATE_POSITION, &values_0_to_99},
@@ -3278,10 +3405,19 @@ static Modifier modifiers[] = {
{"Phaser Regen", PHASER_REGEN, CHORUSFX_POSITION, &values_0_to_99},
{"Phaser Waveform", PHASER_WAVE, CHORUSFX_POSITION, &values_waveform},
{"Phaser Level", PHASER_LEVEL, CHORUSFX_POSITION, &values_0_to_99},
+ {"Phaser Intensity", MX_PHASER_INTENSITY, CHORUSFX_POSITION, &values_0_to_99},
+ {"Trig Phaser Speed", TRIG_PHASER_SPEED, CHORUSFX_POSITION, &values_0_to_99},
+ {"Trig Phaser Sens", TRIG_PHASER_SENS, CHORUSFX_POSITION, &values_0_to_99},
+ {"Trig Phaser LFO", TRIG_PHASER_LFO_START, CHORUSFX_POSITION, &values_0_to_99},
+ {"Trig Phaser Level", TRIG_PHASER_LEVEL, CHORUSFX_POSITION, &values_0_to_99},
+ {"EH Phaser Rate", EH_PHASER_RATE, CHORUSFX_POSITION, &values_0_to_99},
+ {"EH Phaser Color", EH_PHASER_COLOR, CHORUSFX_POSITION, &values_on_off},
{"Chorus Speed", CHORUS_SPEED, CHORUSFX_POSITION, &values_0_to_99},
{"Chorus Depth", CHORUS_DEPTH, CHORUSFX_POSITION, &values_0_to_99},
{"Chorus Level", CHORUS_LEVEL, CHORUSFX_POSITION, &values_0_to_99},
{"Chorus Waveform", CHORUS_WAVE, CHORUSFX_POSITION, &values_waveform},
+ {"Chorus Width", CHORUS_WIDTH, CHORUSFX_POSITION, &values_0_to_99},
+ {"Chorus Intensity", CHORUS_INTENSITY, CHORUSFX_POSITION, &values_0_to_99},
{"Flanger Speed", FLANGER_SPEED, CHORUSFX_POSITION, &values_0_to_99},
{"Flanger Depth", FLANGER_DEPTH, CHORUSFX_POSITION, &values_0_to_99},
{"Flanger Regen", FLANGER_REGEN, CHORUSFX_POSITION, &values_0_to_99},
@@ -3289,6 +3425,13 @@ static Modifier modifiers[] = {
{"Flanger Level", FLANGER_LEVEL, CHORUSFX_POSITION, &values_0_to_99},
{"Flanger Width", MXR_FLANGER_WIDTH, CHORUSFX_POSITION, &values_0_to_99},
{"Flanger Manual", MXR_FLANGER_MANUAL, CHORUSFX_POSITION, &values_0_to_99},
+ {"Flanger Level", TRIG_FLANGER_LEVEL, CHORUSFX_POSITION, &values_0_to_99},
+ {"Flanger Sens", TRIG_FLANGER_SENS, CHORUSFX_POSITION, &values_0_to_99},
+ {"Flanger LFO Start", TRIG_FLANGER_LFO_START, CHORUSFX_POSITION, &values_0_to_99},
+ {"Flanger Speed", TRIG_FLANGER_SPEED, CHORUSFX_POSITION, &values_0_to_99},
+ {"Flanger Range", EH_FLANGER_RANGE, CHORUSFX_POSITION, &values_0_to_99},
+ {"Flanger Rate", EH_FLANGER_RATE, CHORUSFX_POSITION, &values_0_to_99},
+ {"Flanger Color", EH_FLANGER_COLOR, CHORUSFX_POSITION, &values_0_to_99},
{"Vibrato Speed", VIBRATO_SPEED, CHORUSFX_POSITION, &values_0_to_99},
{"Vibrato Depth", VIBRATO_DEPTH, CHORUSFX_POSITION, &values_0_to_99},
{"Rotary Speed", ROTARY_SPEED, CHORUSFX_POSITION, &values_0_to_99},
@@ -3299,6 +3442,10 @@ static Modifier modifiers[] = {
{"VibroPan Depth", VIBROPAN_DEPTH, CHORUSFX_POSITION, &values_0_to_99},
{"VibroPan VibratoPan", VIBROPAN_VIBRA, CHORUSFX_POSITION, &values_0_to_99},
{"VibroPan Waveform", VIBROPAN_WAVE, CHORUSFX_POSITION, &values_waveform},
+ {"Unovibe Speed", UNOVIBE_PEDAL_SPEED, CHORUSFX_POSITION, &values_0_to_99},
+ {"Unovibe Intensity", UNOVIBE_INTENSITY, CHORUSFX_POSITION, &values_0_to_99},
+ {"Unovibe Volume", UNOVIBE_VOLUME, CHORUSFX_POSITION, &values_0_to_99},
+ {"Unovibe Chorus/Vibrato", UNOVIBE_CHORUS_VIBRATO, CHORUSFX_POSITION, &values_chorus_vibrato},
{"Tremolo Speed", TREMOLO_SPEED, CHORUSFX_POSITION, &values_0_to_99},
{"Tremolo Depth", TREMOLO_DEPTH, CHORUSFX_POSITION, &values_0_to_99},
{"Tremolo Waveform", TREMOLO_WAVE, CHORUSFX_POSITION, &values_waveform},
@@ -3307,6 +3454,7 @@ static Modifier modifiers[] = {
{"Panner Waveform", PANNER_WAVE, CHORUSFX_POSITION, &values_waveform},
{"Envelope Sens.", ENVELOPE_SENSITIVITY, CHORUSFX_POSITION, &values_0_to_99},
{"Envelope Range", ENVELOPE_RANGE, CHORUSFX_POSITION, &values_0_to_99},
+ {"Envelope Blend", ENVELOPE_BLEND, CHORUSFX_POSITION, &values_0_to_99},
{"AutoYa Speed", AUTOYA_SPEED, CHORUSFX_POSITION, &values_0_to_99},
{"AutoYa Intensity", AUTOYA_INTENSITY, CHORUSFX_POSITION, &values_0_to_99},
{"AutoYa Range", AUTOYA_RANGE, CHORUSFX_POSITION, &values_0_to_49},
@@ -3315,6 +3463,11 @@ static Modifier modifiers[] = {
{"YaYa Range", YAYA_RANGE, CHORUSFX_POSITION, &values_0_to_49},
{"Step Filter Speed", STEP_FILTER_SPEED, CHORUSFX_POSITION, &values_0_to_99},
{"Step Filter Intensity", STEP_FILTER_INTENSITY, CHORUSFX_POSITION, &values_0_to_99},
+ {"Synth Talk Attack", SYNTH_TALK_ATTACK, CHORUSFX_POSITION, &values_0_to_99},
+ {"Synth Talk Release", SYNTH_TALK_RELEASE, CHORUSFX_POSITION, &values_0_to_99},
+ {"Synth Talk Sens", SYNTH_TALK_SENS, CHORUSFX_POSITION, &values_0_to_99},
+ {"Synth Talk Vox", SYNTH_TALK_VOX, CHORUSFX_POSITION, &values_0_to_99},
+ {"Synth Talk Balance", SYNTH_TALK_BALANCE, CHORUSFX_POSITION, &values_balance},
{"Whammy Amount", WHAMMY_AMOUNT, CHORUSFX_POSITION, &values_whammy_amount},
{"Whammy Pedal", WHAMMY_PEDAL, CHORUSFX_POSITION, &values_0_to_99},
{"Whammy Mix", WHAMMY_MIX, CHORUSFX_POSITION, &values_0_to_99},
@@ -3326,6 +3479,10 @@ static Modifier modifiers[] = {
{"IPS Key", IPS_KEY, CHORUSFX_POSITION, &values_ips_key},
{"IPS Scale", IPS_SCALE, CHORUSFX_POSITION, &values_ips_scale},
{"IPS Level", IPS_LEVEL, CHORUSFX_POSITION, &values_0_to_99},
+ {"Octaver Octave 1", OCTAVER_OCTAVE1, CHORUSFX_POSITION, &values_0_to_99},
+ {"Octaver Octave 2", OCTAVER_OCTAVE2, CHORUSFX_POSITION, &values_0_to_99},
+ {"Octaver Dry Level", OCTAVER_DRY_LEVEL, CHORUSFX_POSITION, &values_0_to_99},
+
{"Delay Enable", DELAY_ON_OFF, DELAY_POSITION, &values_on_off},
{"Delay Time", DELAY_TIME, DELAY_POSITION, &values_delay_time},
{"Delay Repeats", DELAY_REPEATS, DELAY_POSITION, &values_delay_repeats},
@@ -3340,8 +3497,8 @@ static Modifier modifiers[] = {
{"Reverb Liveliness", REVERB_LIVELINESS, REVERB_POSITION, &values_0_to_99},
{"Reverb Level", REVERB_LEVEL, REVERB_POSITION, &values_0_to_99},
{"Reverb Predelay", REVERB_PREDELAY, REVERB_POSITION, &values_0_to_15},
- {"Volume Pre FX", 2626, 13, &values_0_to_99},
- {"Volume Post FX", 2626, 17, &values_0_to_99},
+ {"Volume Pre FX", PRESET_LEVEL, VOLUME_PRE_FX_POSITION, &values_0_to_99},
+ {"Volume Post FX", PRESET_LEVEL, VOLUME_POST_FX_POSITION, &values_0_to_99},
};
int n_modifiers = G_N_ELEMENTS(modifiers);
@@ -3523,7 +3680,7 @@ static XmlLabel xml_amp_cab_labels[] = {
static XmlLabel xml_noisegate_labels[] = {
{NOISEGATE_GATE, "Gate"},
{NOISEGATE_SWELL, "Swell"},
-};
+};
static XmlLabel xml_chorus_pre_post_labels[] = {
{CHORUSFX_PRE, "Pre"},
@@ -3577,6 +3734,11 @@ static XmlLabel xml_waveform_labels[] = {
{CHORUS_WAVEFORM_SQUARE, "Square"},
};
+static XmlLabel xml_chorus_vibrato_labels[] = {
+ {0, "Chorus"},
+ {1, "Vibrato"},
+};
+
static XmlLabel xml_whammy_amount_labels[] = {
{WHAMMY_TYPE_OCT_UP, "OctUp"},
{WHAMMY_TYPE_2OCT_UP, "2OctUp"},
@@ -3636,7 +3798,7 @@ static XmlLabel xml_ips_scale_labels[] = {
{IPS_SCALE_LYDIAN, "Lydian"},
{IPS_SCALE_HMINOR, "HMinor"},
};
-
+
static XmlLabel xml_delay_labels[] = {
{DELAY_TYPE_ANALOG, "Analog"},
@@ -3791,6 +3953,9 @@ static XmlLabel xml_fx_lib_labels[] = {
{EFFECTS_LIB_ROTARY_TAPE, "Rotary + Tape Delay"},
};
+static XmlLabel xml_rhold_labels[] = {
+ {100, "RHold"},
+};
/* Array to map id/position pairs to labels and settings. */
XmlSettings xml_settings[] = {
{0, 0, "None", NULL,},
@@ -3853,10 +4018,10 @@ XmlSettings xml_settings[] = {
{AMP_CHANNEL, AMP_CHANNEL_POSITION, "Amp Channel", &values_a_b, xml_amp_channel_labels, G_N_ELEMENTS(xml_amp_channel_labels)},
- {AMP_TYPE, AMP_POSITION, "Amp A Type", &values_amp_type, xml_amp_labels, G_N_ELEMENTS(xml_amp_labels)},
- {AMP_ON_OFF, AMP_POSITION, "Amp A Enable", &values_on_off, xml_on_off_labels, G_N_ELEMENTS(xml_on_off_labels)},
- {AMP_GAIN, AMP_POSITION, "Amp A Gain", &values_0_to_99,},
- {AMP_LEVEL, AMP_POSITION, "Amp A Level", &values_0_to_99,},
+ {AMP_TYPE, AMP_A_POSITION, "Amp A Type", &values_amp_type, xml_amp_labels, G_N_ELEMENTS(xml_amp_labels)},
+ {AMP_ON_OFF, AMP_A_POSITION, "Amp A Enable", &values_on_off, xml_on_off_labels, G_N_ELEMENTS(xml_on_off_labels)},
+ {AMP_GAIN, AMP_A_POSITION, "Amp A Gain", &values_0_to_99,},
+ {AMP_LEVEL, AMP_A_POSITION, "Amp A Level", &values_0_to_99,},
{AMP_TYPE, AMP_B_POSITION, "Amp B Type", &values_amp_type, xml_amp_labels, G_N_ELEMENTS(xml_amp_labels)},
{AMP_ON_OFF, AMP_B_POSITION, "Amp B Enable", &values_on_off, xml_on_off_labels, G_N_ELEMENTS(xml_on_off_labels)},
@@ -3874,72 +4039,126 @@ XmlSettings xml_settings[] = {
{NOISEGATE_RELEASE, NOISEGATE_POSITION, "Gate Release", &values_0_to_99,},
{NOISEGATE_ATTN, NOISEGATE_POSITION, "Gate Attenuation", &values_0_to_99,},
-
{MOD_PRE_POST, CHORUSFX_POSITION, "Mod Pre/Post", &values_pre_post, xml_chorus_pre_post_labels, G_N_ELEMENTS(xml_chorus_pre_post_labels)},
{CHORUSFX_ON_OFF, CHORUSFX_POSITION, "Chorus/FX Enable", &values_on_off, xml_on_off_labels, G_N_ELEMENTS(xml_on_off_labels)},
{CHORUSFX_PRE_POST, CHORUSFX_POSITION, "Mod Pre/Post", &values_pre_post, xml_chorus_pre_post_labels, G_N_ELEMENTS(xml_chorus_pre_post_labels)},
{CHORUSFX_TYPE, CHORUSFX_POSITION, "Mod Type", &values_mod_type, xml_chorusfx_labels, G_N_ELEMENTS(xml_chorusfx_labels)},
+
{PHASER_SPEED, CHORUSFX_POSITION, "Phaser Speed", &values_0_to_99,},
{PHASER_DEPTH, CHORUSFX_POSITION, "Phaser Depth", &values_0_to_99,},
{PHASER_REGEN, CHORUSFX_POSITION, "Phaser Regen", &values_0_to_99,},
{PHASER_WAVE, CHORUSFX_POSITION, "Phaser Waveform", &values_waveform, xml_waveform_labels, G_N_ELEMENTS(xml_waveform_labels)},
{PHASER_LEVEL, CHORUSFX_POSITION, "Phaser Level", &values_0_to_99,},
+
+ {EH_PHASER_RATE, CHORUSFX_POSITION, "Phaser Rate", &values_0_to_99,},
+ {EH_PHASER_COLOR, CHORUSFX_POSITION, "Phaser xml Color", &values_on_off, xml_on_off_labels,G_N_ELEMENTS(xml_on_off_labels)},
+
+ {MX_PHASER_INTENSITY, CHORUSFX_POSITION, "Intensity", &values_1_to_4,},
+
+ {TRIG_PHASER_SPEED, CHORUSFX_POSITION, "Trig Phaser Speed", &values_0_to_99,},
+ {TRIG_PHASER_SENS, CHORUSFX_POSITION, "Trig Phaser Sens", &values_0_to_99,},
+ {TRIG_PHASER_LFO_START, CHORUSFX_POSITION, "Trig Phaser LFO", &values_0_to_99,},
+ {TRIG_PHASER_LEVEL, CHORUSFX_POSITION, "Trig Phaser Level", &values_0_to_99,},
+
{CHORUS_SPEED, CHORUSFX_POSITION, "Chorus Speed", &values_0_to_99,},
{CHORUS_DEPTH, CHORUSFX_POSITION, "Chorus Depth", &values_0_to_99,},
{CHORUS_LEVEL, CHORUSFX_POSITION, "Chorus Level", &values_0_to_99,},
+ {CHORUS_WIDTH, CHORUSFX_POSITION, "Chorus Width", &values_0_to_99,},
+ {CHORUS_INTENSITY, CHORUSFX_POSITION, "Chorus Intensity", &values_0_to_99,},
{CHORUS_WAVE, CHORUSFX_POSITION, "Chorus Waveform", &values_waveform, xml_waveform_labels, G_N_ELEMENTS(xml_waveform_labels)},
+
{FLANGER_SPEED, CHORUSFX_POSITION, "Flanger Speed", &values_0_to_99,},
{FLANGER_DEPTH, CHORUSFX_POSITION, "Flanger Depth", &values_0_to_99,},
{FLANGER_REGEN, CHORUSFX_POSITION, "Flanger Regen", &values_0_to_99,},
{FLANGER_WAVE, CHORUSFX_POSITION, "Flanger Waveform", &values_waveform, xml_waveform_labels, G_N_ELEMENTS(xml_waveform_labels)},
{FLANGER_LEVEL, CHORUSFX_POSITION, "Flanger Level", &values_0_to_99,},
+
+ {TRIG_FLANGER_SPEED, CHORUSFX_POSITION, "Trig Flanger Speed", &values_0_to_99,},
+ {TRIG_FLANGER_SENS, CHORUSFX_POSITION, "Trig Flanger Sens", &values_0_to_99,},
+ {TRIG_FLANGER_LFO_START, CHORUSFX_POSITION, "Trig Flanger LFO Start", &values_0_to_99,},
+ {TRIG_FLANGER_LEVEL, CHORUSFX_POSITION, "Trig Flanger Level", &values_0_to_99,},
+
+ {EH_FLANGER_RATE, CHORUSFX_POSITION, "EH Flanger Rate", &values_0_to_99,},
+ {EH_FLANGER_RANGE, CHORUSFX_POSITION, "EH Flanger Range", &values_0_to_99,},
+ {EH_FLANGER_COLOR, CHORUSFX_POSITION, "EH Flanger Color", &values_0_to_99,},
+
{MXR_FLANGER_WIDTH, CHORUSFX_POSITION, "Flanger Width", &values_0_to_99,},
{MXR_FLANGER_MANUAL, CHORUSFX_POSITION, "Flanger Manual", &values_0_to_99,},
+
{VIBRATO_SPEED, CHORUSFX_POSITION, "Vibrato Speed", &values_0_to_99,},
{VIBRATO_DEPTH, CHORUSFX_POSITION, "Vibrato Depth", &values_0_to_99,},
+
{ROTARY_SPEED, CHORUSFX_POSITION, "Rotary Speed", &values_0_to_99,},
{ROTARY_INTENSITY, CHORUSFX_POSITION, "Rotary Intensity", &values_0_to_99,},
{ROTARY_DOPPLER, CHORUSFX_POSITION, "Rotary Doppler", &values_0_to_99,},
{ROTARY_CROSSOVER, CHORUSFX_POSITION, "Rotary Crossover", &values_0_to_99,},
+
{VIBROPAN_SPEED, CHORUSFX_POSITION, "VibroPan Speed", &values_0_to_99,},
{VIBROPAN_DEPTH, CHORUSFX_POSITION, "VibroPan Depth", &values_0_to_99,},
{VIBROPAN_VIBRA, CHORUSFX_POSITION, "VibroPan VibratoPan", &values_0_to_99,},
{VIBROPAN_WAVE, CHORUSFX_POSITION, "VibroPan Waveform", &values_waveform, xml_waveform_labels, G_N_ELEMENTS(xml_waveform_labels)},
+
+ {UNOVIBE_PEDAL_SPEED, CHORUSFX_POSITION, "Unovibe Speed", &values_0_to_99,},
+ {UNOVIBE_INTENSITY, CHORUSFX_POSITION, "Unovibe Intensity", &values_0_to_99,},
+ {UNOVIBE_VOLUME, CHORUSFX_POSITION, "Unovibe Volume", &values_0_to_99,},
+ {UNOVIBE_CHORUS_VIBRATO, CHORUSFX_POSITION, "Unovibe Chorus/Vibrato", &values_chorus_vibrato, xml_chorus_vibrato_labels, G_N_ELEMENTS(xml_chorus_vibrato_labels)},
+
{TREMOLO_SPEED, CHORUSFX_POSITION, "Tremolo Speed", &values_0_to_99,},
{TREMOLO_DEPTH, CHORUSFX_POSITION, "Tremolo Depth", &values_0_to_99,},
{TREMOLO_WAVE, CHORUSFX_POSITION, "Tremolo Waveform", &values_waveform, xml_waveform_labels, G_N_ELEMENTS(xml_waveform_labels)},
+
{PANNER_SPEED, CHORUSFX_POSITION, "Panner Speed", &values_0_to_99,},
{PANNER_DEPTH, CHORUSFX_POSITION, "Panner Depth", &values_0_to_99,},
{PANNER_WAVE, CHORUSFX_POSITION, "Panner Waveform", &values_waveform, xml_waveform_labels, G_N_ELEMENTS(xml_waveform_labels)},
+
{ENVELOPE_SENSITIVITY, CHORUSFX_POSITION, "Envelope Sens.", &values_0_to_99,},
{ENVELOPE_RANGE, CHORUSFX_POSITION, "Envelope Range", &values_0_to_99,},
+ {ENVELOPE_BLEND, CHORUSFX_POSITION, "Envelope Blend", &values_0_to_99,},
+
{AUTOYA_SPEED, CHORUSFX_POSITION, "AutoYa Speed", &values_0_to_99,},
{AUTOYA_INTENSITY, CHORUSFX_POSITION, "AutoYa Intensity", &values_0_to_99,},
{AUTOYA_RANGE, CHORUSFX_POSITION, "AutoYa Range", &values_0_to_49,},
+
{YAYA_PEDAL, CHORUSFX_POSITION, "YaYa Pedal", &values_0_to_99,},
{YAYA_INTENSITY, CHORUSFX_POSITION, "YaYa Intensity", &values_0_to_99,},
{YAYA_RANGE, CHORUSFX_POSITION, "YaYa Range", &values_0_to_49,},
+
{STEP_FILTER_SPEED, CHORUSFX_POSITION, "Step Filter Speed", &values_0_to_99,},
{STEP_FILTER_INTENSITY, CHORUSFX_POSITION, "Step Filter Intensity", &values_0_to_99,},
+
{WHAMMY_AMOUNT, CHORUSFX_POSITION, "Whammy Amount", &values_whammy_amount, xml_whammy_amount_labels, G_N_ELEMENTS(xml_whammy_amount_labels)},
{WHAMMY_PEDAL, CHORUSFX_POSITION, "Whammy Pedal", &values_0_to_99,},
{WHAMMY_MIX, CHORUSFX_POSITION, "Whammy Mix", &values_0_to_99,},
- {CHORUSFX_PRE_POST, CHORUSFX_POSITION, "Mod Pre/Post", &values_pre_post, xml_chorus_pre_post_labels, G_N_ELEMENTS(xml_chorus_pre_post_labels)},
{PITCH_AMOUNT, CHORUSFX_POSITION, "Pitch Shift Amount", &values_m24_to_24,},
{PITCH_MIX, CHORUSFX_POSITION, "Pitch Shift Mix", &values_0_to_99,},
+
{DETUNE_AMOUNT, CHORUSFX_POSITION, "Detune Amount", &values_m24_to_24,},
{DETUNE_LEVEL, CHORUSFX_POSITION, "Detune Level", &values_0_to_99,},
+
{IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, "IPS Amount", &values_ips_shift, xml_ips_shift_labels, G_N_ELEMENTS(xml_ips_shift_labels)},
{IPS_KEY, CHORUSFX_POSITION, "IPS Key", &values_ips_key, xml_ips_key_labels, G_N_ELEMENTS(xml_ips_key_labels)},
{IPS_SCALE, CHORUSFX_POSITION, "IPS Scale", &values_ips_scale, xml_ips_scale_labels, G_N_ELEMENTS(xml_ips_scale_labels)},
{IPS_LEVEL, CHORUSFX_POSITION, "IPS Level", &values_0_to_99,},
+
+ {SYNTH_TALK_ATTACK, CHORUSFX_POSITION, "Synth Talk Attack", &values_0_to_99,},
+ {SYNTH_TALK_RELEASE, CHORUSFX_POSITION, "Synth Talk Release", &values_0_to_99,},
+ {SYNTH_TALK_SENS, CHORUSFX_POSITION, "Synth Talk Sens", &values_0_to_99,},
+ {SYNTH_TALK_VOX, CHORUSFX_POSITION, "Synth Talk Vox", &values_0_to_99,},
+ {SYNTH_TALK_BALANCE, CHORUSFX_POSITION, "Synth Talk Balance", &values_0_to_99,},
+
+ {GNX3K_SYNTH_TALK_RELEASE, CHORUSFX_POSITION, "Synth Talk Release", &values_0_to_99,},
+
+ {OCTAVER_OCTAVE1 , CHORUSFX_POSITION, "Octaver Octave 1", &values_0_to_99},
+ {OCTAVER_OCTAVE2 , CHORUSFX_POSITION, "Octaver Octave 2", &values_0_to_99},
+ {OCTAVER_DRY_LEVEL, CHORUSFX_POSITION, "Octaver Dry Level", &values_0_to_99},
+
{DELAY_TYPE, DELAY_POSITION, "Delay Type", &values_delay_type, xml_delay_labels, G_N_ELEMENTS(xml_delay_labels)},
{DELAY_ON_OFF, DELAY_POSITION, "Delay Enable", &values_on_off, xml_on_off_labels, G_N_ELEMENTS(xml_on_off_labels)},
{DELAY_TIME, DELAY_POSITION, "Delay Time", &values_delay_time,},
- {DELAY_REPEATS, DELAY_POSITION, "Delay Repeats", &values_delay_repeats,},
+ {DELAY_REPEATS, DELAY_POSITION, "Delay Repeats", &values_delay_repeats, xml_rhold_labels, G_N_ELEMENTS(xml_rhold_labels)},
{DELAY_LEVEL, DELAY_POSITION, "Delay Level", &values_0_to_99,},
{DELAY_DUCK_THRESH, DELAY_POSITION, "Delay Duck Thresh", &values_0_to_99,},
{DELAY_DUCK_LEVEL, DELAY_POSITION, "Delay Duck Level", &values_0_to_99,},
@@ -3961,7 +4180,6 @@ XmlSettings xml_settings[] = {
{WAH_ON_OFF, WAH_POSITION, "Wah Enable", &values_on_off, xml_on_off_labels, G_N_ELEMENTS(xml_on_off_labels)},
{WAH_PEDAL_POSITION, WAH_POSITION, "Wah Position", &values_0_to_99,},
{WAH_VOLUME_BOOST, WAH_POSITION, "Wah Vol. Boost", &values_db_boost,},
- {MOD_TYPE, MOD_POSITION, "Mod Type", &values_0_to_99,}, // ???
{PRESET_LEVEL, PRESET_POSITION, "Preset Level", &values_0_to_99,},
@@ -3996,8 +4214,8 @@ XmlSettings xml_settings[] = {
{EQ_BASS, EQ_A_POSITION, "EQ A Bass", &values_eq_db,},
{EQ_MID, EQ_A_POSITION, "EQ A Mid", &values_eq_db,},
{EQ_TREB, EQ_A_POSITION, "EQ A Treb", &values_eq_db,},
- {EQ_MID_FREQ, EQ_A_POSITION, "EQ A Mid Freq", &values_eq_mid_hz,},
{EQ_PRESENCE, EQ_A_POSITION, "EQ A Presence", &values_eq_db,},
+ {EQ_MID_FREQ, EQ_A_POSITION, "EQ A Mid Freq", &values_eq_mid_hz,},
{EQ_TREB_FREQ, EQ_A_POSITION, "EQ A Treb Freq", &values_eq_treb_hz,},
{EQ_ENABLE, EQ_B_POSITION, "EQ B Enable", &values_on_off, xml_on_off_labels, G_N_ELEMENTS(xml_on_off_labels)},
@@ -4005,20 +4223,79 @@ XmlSettings xml_settings[] = {
{EQ_BASS, EQ_B_POSITION, "EQ B Bass", &values_eq_db,},
{EQ_MID, EQ_B_POSITION, "EQ B Mid", &values_eq_db,},
{EQ_TREB, EQ_B_POSITION, "EQ B Treb", &values_eq_db,},
- {EQ_MID_FREQ, EQ_B_POSITION, "EQ B Mid Freq", &values_eq_mid_hz,},
{EQ_PRESENCE, EQ_B_POSITION, "EQ B Presence", &values_eq_db,},
+ {EQ_MID_FREQ, EQ_B_POSITION, "EQ B Mid Freq", &values_eq_mid_hz,},
{EQ_TREB_FREQ, EQ_B_POSITION, "EQ B Treb Freq", &values_eq_treb_hz,},
- {TONE_LIB_TYPE, LIB_POSITION, "Tone Lib Type", &values_tone_lib_type, xml_tone_lib_labels, G_N_ELEMENTS(xml_tone_lib_labels)},
- {FX_LIB_TYPE, LIB_POSITION, "FX Lib Type", &values_fx_lib_type, xml_fx_lib_labels, G_N_ELEMENTS(xml_fx_lib_labels)},
- {FX_LIB_LEVEL, LIB_POSITION, "FxLiblvl", &values_0_to_99,},
- {FX_LIB_LEVEL_MAX1, LIB_POSITION, "FxLibLvlMax1", &values_0_to_99,},
- {FX_LIB_LEVEL_MAX2, LIB_POSITION, "FxLibLvlMax2", &values_0_to_99,},
- {FX_LIB_LEVEL_MAX3, LIB_POSITION, "FxLibLvlMax3", &values_0_to_99,},
+ {TONE_LIB_TYPE, LIB_POSITION_A, "Tone Lib Type", &values_tone_lib_type, xml_tone_lib_labels, G_N_ELEMENTS(xml_tone_lib_labels)},
+ {FX_LIB_TYPE, LIB_POSITION_A, "FX Lib Type", &values_fx_lib_type, xml_fx_lib_labels, G_N_ELEMENTS(xml_fx_lib_labels)},
+ {FX_LIB_LEVEL, LIB_POSITION_A, "FxLiblvl", &values_0_to_99,},
+ {FX_LIB_LEVEL_MAX1, LIB_POSITION_A, "FxLibLvlMax1", &values_0_to_99,},
+ {FX_LIB_LEVEL_MAX2, LIB_POSITION_A, "FxLibLvlMax2", &values_0_to_99,},
+ {FX_LIB_LEVEL_MAX3, LIB_POSITION_A, "FxLibLvlMax3", &values_0_to_99,},
+
+ {TONE_LIB_TYPE, LIB_POSITION_B, "Tone Lib B Type", &values_tone_lib_type, xml_tone_lib_labels, G_N_ELEMENTS(xml_tone_lib_labels)},
+ {FX_LIB_TYPE, LIB_POSITION_B, "FX Lib B Type", &values_fx_lib_type, xml_fx_lib_labels, G_N_ELEMENTS(xml_fx_lib_labels)},
+ {FX_LIB_LEVEL, LIB_POSITION_B, "FxLib B lvl", &values_0_to_99,},
+ {FX_LIB_LEVEL_MAX1, LIB_POSITION_B, "FxLib B LvlMax1", &values_0_to_99,},
+ {FX_LIB_LEVEL_MAX2, LIB_POSITION_B, "FxLib B LvlMax2", &values_0_to_99,},
+ {FX_LIB_LEVEL_MAX3, LIB_POSITION_B, "FxLib B LvlMax3", &values_0_to_99,},
+
+ // Global settings, not part of presets or standard XML.
+ {TUNING_REFERENCE, GLOBAL_POSITION, "Tuning Reference", &values_0_to_99,},
+ {USB_AUDIO_PLAYBACK_MIX, GLOBAL_POSITION, "USB Audio Playback Mix", &values_0_to_99,},
+ {USB_AUDIO_LEVEL, GLOBAL_POSITION, "USB Audio Level", &values_0_to_99,},
+ {GUI_MODE_ON_OFF, GLOBAL_POSITION, "GUI Mode", &values_0_to_99,},
+ {EXP_PEDAL_LEVEL, GLOBAL_POSITION, "EXP Pedal Level", &values_0_to_99,},
+ {STOMP_MODE, GLOBAL_POSITION, "Stomp Mode", &values_0_to_99,},
};
-
guint n_xml_settings = G_N_ELEMENTS(xml_settings);
+
+gchar *Positions[] = {
+ [ GLOBAL_POSITION ] = "Global",
+ [ PICKUP_POSITION ] = "Pickup",
+ [ WAH_POSITION ] = "Wah",
+ [ COMP_POSITION ] = "Compressor",
+ [ GNX3K_WHAM_POSITION ] = "Gnx3K Wham",
+ [ DIST_POSITION ] = "Distortion",
+ [ AMP_CHANNEL_POSITION ] = "Amp Channel",
+ [ GNX_CHANNEL_POSITION ] = "Gnx Channel",
+ [ AMP_A_POSITION ] = "Amp A",
+ [ AMP_CAB_POSITION ] = "Amp Cab A",
+ [ AMP_B_POSITION ] = "Amp B",
+ [ AMP_CAB_B_POSITION ] = "Amp Cab B",
+ [ NOISEGATE_POSITION ] = "Noise Gate",
+ [ VOLUME_PRE_FX_POSITION ] = "Volume Pre Fx",
+ [ CHORUSFX_POSITION ] = "Chorus Fx",
+ [ DELAY_POSITION ] = "Delay",
+ [ REVERB_POSITION ] = "Reverb",
+ [ VOLUME_POST_FX_POSITION ] = "Volume Post Fx",
+ [ PRESET_POSITION ] = "Preset",
+ [ EXP_POSITION ] = "Expression",
+ [ WAH_POSITION_MIN_MAX ] = "Wah Min Max",
+ [ VSWITCH_ASSIGN_POSITION ] = "Vswitch",
+ [ LFO1_POSITION ] = "LFO 1",
+ [ LFO2_POSITION ] = "LFO 2",
+ [ EQ_A_POSITION ] = "EQ A",
+ [ EQ_B_POSITION ] = "EQ B",
+ [ LIB_POSITION_A ] = "Library A",
+ [ LIB_POSITION_B ] = "Library B",
+ [ AMP_LOOP_POSITION ] = "Amp Loop",
+};
+
+guint max_position = G_N_ELEMENTS(Positions);
+
+gchar *
+get_position (guint position)
+{
+ if (position > max_position) {
+ return "";
+ }
+
+ return Positions[position];
+}
+
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
/**
@@ -4078,21 +4355,65 @@ static void effect_settings_free(EffectSettings *settings)
}
/**
- * Retrieves modifier linkable group from device.
+ * Global holding the list of linkable parameters.
*
- * \return ModifierGroup which must be freed using modifier_group_free.
+ * Used for Pedal Assignment and the LFO's.
+ */
+ModifierGroup *ModifierLinkableList;
+
+EffectGroup *get_modifier_group(void)
+{
+ EffectGroup *group = NULL;
+ if (ModifierLinkableList) {
+ group = ModifierLinkableList->group;
+ }
+ return group;
+}
+
+guint get_modifier_amt(void)
+{
+ guint amt = 0;
+ if (ModifierLinkableList) {
+ amt = ModifierLinkableList->group_amt;
+ }
+ return amt;
+}
+
+/**
+ * \param modifier_group group to be freed
+ *
+ * Frees all memory used by ModifierGroup.
+ **/
+static void modifier_group_free(ModifierGroup *modifier_group)
+{
+ g_return_if_fail(modifier_group != NULL);
+
+ int x;
+ for (x=0; x<modifier_group->group_amt; x++) {
+ if (modifier_group->group[x].settings)
+ /* The settings for the EXP_POSITION are dynamically allocated. */
+ modifier_settings_exp_free(modifier_group->group[x].settings);
+ effect_settings_free(modifier_group->group[x].settings);
+ }
+ g_slice_free1(modifier_group->group_amt * sizeof(EffectGroup),
+ modifier_group->group);
+ g_slice_free(ModifierGroup, modifier_group);
+}
+/**
+ * Retrieves modifier linkable group from device and updates the
+ * global list of linkable parameters. The old list is freed.
+ *
+ * \param msg A buffer containing the message with the list of
+ * linkable parameters.
+ *
**/
-ModifierGroup *modifier_linkable_list()
+void update_modifier_linkable_list(GString *msg)
{
guint group_id;
guint count;
guint i;
- send_message(REQUEST_MODIFIER_LINKABLE_LIST, "\x00\x01", 2);
-
- GString *data = get_message_by_id(RECEIVE_MODIFIER_LINKABLE_LIST);
-
- unsigned char *str = (unsigned char*)data->str;
+ unsigned char *str = (unsigned char*)msg->str;
group_id = (str[8] << 8) | str[9];
count = (str[10] << 8) | str[11];
@@ -4102,7 +4423,10 @@ ModifierGroup *modifier_linkable_list()
modifier_group->type = EXP_TYPE;
modifier_group->position = EXP_POSITION;
- g_message("Group %d count %d", group_id, count);
+ debug_msg(DEBUG_MSG2HOST|DEBUG_GROUP,
+ "RECEIVE_MODIFIER_LINKABLE_LIST: Group %d count %d",
+ group_id, count);
+
EffectGroup *group = g_slice_alloc(count * sizeof(EffectGroup));
for (i=0; i<count; i++) {
@@ -4124,34 +4448,22 @@ ModifierGroup *modifier_linkable_list()
if (group[i].settings == NULL)
group[i].settings_amt = 0;
- g_message("ID: %d Position: %d Label: %s", id, position, modifier ? modifier->label : NULL);
+ debug_msg(DEBUG_MSG2HOST|DEBUG_GROUP,
+ "Position : %d\nID : %d\nName : %s\n",
+ position, id, modifier ? modifier->label : NULL);
}
modifier_group->group = group;
modifier_group->group_amt = count;
- return modifier_group;
-}
-
-/**
- * \param modifier_group group to be freed
- *
- * Frees all memory used by ModifierGroup.
- **/
-void modifier_group_free(ModifierGroup *modifier_group)
-{
- g_return_if_fail(modifier_group != NULL);
-
- int x;
- for (x=0; x<modifier_group->group_amt; x++) {
- if (modifier_group->group[x].settings)
- effect_settings_free(modifier_group->group[x].settings);
+ if (ModifierLinkableList) {
+ modifier_group_free(ModifierLinkableList);
+ ModifierLinkableList = NULL;
}
- g_slice_free1(modifier_group->group_amt * sizeof(EffectGroup),
- modifier_group->group);
- g_slice_free(ModifierGroup, modifier_group);
+ ModifierLinkableList = modifier_group;
}
+
/**
* \param values EffectValues to examine
* \param min return location for minimum value