diff --git a/effects.c b/effects.c index 287f51e..595a62a 100644 --- a/effects.c +++ b/effects.c @@ -174,6 +174,11 @@ static EffectValues values_pickup_type = { 0.0, 1.0, pickup_type_labels, }; +static EffectValues values_1_to_10_step_0p1 = { + /** \todo make this display propertly (1.0, 1.1, ...., 10.0) */ + 0.0, 90.0, NULL, +}; + static EffectSettings wah_settings[] = { {"Min", WAH_MIN, WAH_POSITION_MIN_MAX, &values_0_to_99}, {"Max", WAH_MAX, WAH_POSITION_MIN_MAX, &values_0_to_99}, @@ -193,6 +198,11 @@ static EffectSettings comp_cs_settings[] = { {"Level", COMP_LEVEL, COMP_POSITION, &values_0_to_99}, }; +static EffectSettings comp_dyna_settings[] = { + {"Sensitivity", COMP_SENSITIVITY, COMP_POSITION, &values_0_to_99}, + {"Output", COMP_OUTPUT, COMP_POSITION, &values_0_to_99}, +}; + static EffectSettings dist_screamer_settings[] = { {"Drive", DIST_SCREAMER_DRIVE, DIST_POSITION, &values_0_to_99}, {"Tone", DIST_SCREAMER_TONE, DIST_POSITION, &values_0_to_99}, @@ -273,12 +283,31 @@ static EffectSettings dist_mp_settings[] = { {"Volume", DIST_MP_VOLUME, DIST_POSITION, &values_0_to_99}, }; -static EffectSettings amp_settings[] = { +static EffectSettings rp250_amp_settings[] = { {"Gain", AMP_GAIN, AMP_POSITION, &values_0_to_99}, {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99}, }; -static EffectSettings amp_settings2[] = { +static EffectSettings rp250_amp_settings2[] = { + {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99}, +}; + +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}, +}; + +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}, +}; + +static EffectSettings rp500_amp_settings3[] = { {"Level", AMP_LEVEL, AMP_POSITION, &values_0_to_99}, }; @@ -504,11 +533,17 @@ static EffectGroup wah_group[] = { {WAH_TYPE_CLYDE, "Clyde wah", WAH_TYPE, WAH_POSITION, wah_settings, G_N_ELEMENTS(wah_settings)}, }; -static EffectGroup comp_group[] = { +static EffectGroup rp250_comp_group[] = { {COMP_TYPE_DIGI, "Digital compressor", COMP_TYPE, COMP_POSITION, comp_digi_settings, G_N_ELEMENTS(comp_digi_settings)}, {COMP_TYPE_CS, "CS compressor", COMP_TYPE, COMP_POSITION, comp_cs_settings, G_N_ELEMENTS(comp_cs_settings)}, }; +static EffectGroup rp500_comp_group[] = { + {COMP_TYPE_DIGI, "Digital compressor", COMP_TYPE, COMP_POSITION, comp_digi_settings, G_N_ELEMENTS(comp_digi_settings)}, + {COMP_TYPE_CS, "CS compressor", COMP_TYPE, COMP_POSITION, comp_cs_settings, G_N_ELEMENTS(comp_cs_settings)}, + {COMP_TYPE_DYNA, "Dyna comp", COMP_TYPE, COMP_POSITION, comp_dyna_settings, G_N_ELEMENTS(comp_dyna_settings)}, +}; + static EffectGroup dist_group[] = { {DIST_TYPE_SCREAMER, "Screamer", DIST_TYPE, DIST_POSITION, dist_screamer_settings, G_N_ELEMENTS(dist_screamer_settings)}, {DIST_TYPE_808, "808", DIST_TYPE, DIST_POSITION, dist_808_settings, G_N_ELEMENTS(dist_808_settings)}, @@ -569,29 +604,85 @@ static EffectGroup reverb_group[] = { {REVERB_TYPE_EMT240_PLATE, "EMT240 Plate", REVERB_TYPE, REVERB_POSITION, reverb_emt240_plate_settings, G_N_ELEMENTS(reverb_emt240_plate_settings)}, }; -static EffectGroup amp_group[] = { - {AMP_TYPE_TWEED_CHAMP, "Tweed Champ", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_TWEED_DELUXE, "Tweed Deluxe", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_TWEED_BASSMAN, "Tweed Bassman", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_BLACKFACE_TWIN, "Blackface Twin", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_BLACKFACE_DELUXE, "Blackface Deluxe", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_SUPER_LEAD_PLEXI, "Super Lead Plexi", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_MASTER_VOLUME, "Master Volume", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_JCM800, "JCM800", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_JCM900, "JCM900", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_AC15, "AC15", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_AC30TB, "AC30TB", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_HIWATT_100, "Hiwatt 100", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_BOOGIE_MARK_II, "Boogie Mark II", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_DUAL_RECTIFIER, "Dual Rectifier", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_MATCHLESS_HC30, "Matchless HC30", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_SOLO, "Solo", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_METAL, "Metal", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_BRIGHT, "Bright", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_CLEAN, "Clean", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_HIGH_GAIN, "High Gain", AMP_TYPE, AMP_POSITION, amp_settings, G_N_ELEMENTS(amp_settings)}, - {AMP_TYPE_ACOUSTIC, "Acoustic", AMP_TYPE, AMP_POSITION, amp_settings2, G_N_ELEMENTS(amp_settings2)}, - {AMP_TYPE_DIRECT, "Direct", AMP_TYPE, AMP_POSITION, amp_settings2, G_N_ELEMENTS(amp_settings2)}, +static EffectGroup rp250_amp_group[] = { + {AMP_TYPE_TWEED_CHAMP, "Tweed Champ", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_TWEED_DELUXE, "Tweed Deluxe", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_TWEED_BASSMAN, "Tweed Bassman", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_BLACKFACE_TWIN, "Blackface Twin", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_BLACKFACE_DELUXE, "Blackface Deluxe", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_SUPER_LEAD_PLEXI, "Super Lead Plexi", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_MASTER_VOLUME, "Master Volume", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_JCM800, "JCM800", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_JCM900, "JCM900", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_AC15, "AC15", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_AC30TB, "AC30TB", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_HIWATT_100, "Hiwatt 100", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_BOOGIE_MARK_II, "Boogie Mark II", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_DUAL_RECTIFIER, "Dual Rectifier", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_MATCHLESS_HC30, "Matchless HC30", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_SOLO, "Solo", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_METAL, "Metal", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_BRIGHT, "Bright", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_CLEAN, "Clean", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_HIGH_GAIN, "High Gain", AMP_TYPE, AMP_POSITION, rp250_amp_settings, G_N_ELEMENTS(rp250_amp_settings)}, + {AMP_TYPE_ACOUSTIC, "Acoustic", AMP_TYPE, AMP_POSITION, rp250_amp_settings2, G_N_ELEMENTS(rp250_amp_settings2)}, + {AMP_TYPE_DIRECT, "Direct", AMP_TYPE, AMP_POSITION, rp250_amp_settings2, G_N_ELEMENTS(rp250_amp_settings2)}, +}; + +static EffectGroup rp500_amp_group[] = { + {AMP_TYPE_TWEED_CHAMP, "Tweed Champ", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_TWEED_DELUXE, "Tweed Deluxe", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_TWEED_BASSMAN, "Tweed Bassman", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_BROWN_BASSMAN, "Brown Bassman", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_BLACKFACE_TWIN, "Blackface Twin", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_BLACKFACE_DELUXE, "Blackface Deluxe", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_PLEXI_JTM_45, "Plexi JTM-45", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_SUPER_LEAD_PLEXI, "Plexi Lead", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_PLEXI_JUMP_PANEL, "Plexi Jump Panel", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_MASTER_VOLUME, "Master Volume", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_JCM800, "JCM800", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_JCM900, "JCM900", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_JCM2000, "JCM2000", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_AC15, "AC-15", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_AC30TB, "AC-30 TB", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_HIWATT_100, "Hiwatt 100", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_BOOGIE_MARK_II, "Boogie Mark IIC", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_BOOGIE_MARK_IV, "Boogie Mark IV", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_DUAL_RECTIFIER, "Dual Rectifier", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_TRIPLE_RECTIFIER, "Triple Rectifier", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_LEGACY_VL100, "Legacy VL-100", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_MATCHLESS_HC30, "Matchless HC30", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_SOLDANO_100, "Soldano 100", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_SUPERGROUP, "Supergroup", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_GA40, "GA-40", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_OR120, "OR-120", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_PV5150II, "PV 5150II", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_RG100, "RG100", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_JC120_JAZZ, "JC-120 Jazz", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_SOLAR100, "Solar 100", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_SOLO, "Solo", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_METAL, "Metal", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_BRIGHT, "Bright Clean", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_CHUNK, "Chunk", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_CLEAN, "Clean Tube", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_HIGH_GAIN, "High Gain", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_BLUES, "Blues", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_FUZZ, "Fuzz", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_SPANK, "Spank", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_GSP2101_CLEAN_TUBE, "GSP2101 Clean Tube", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_GSP2101_SAT_TUBE, "GSP2101 Sat Tube", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_CRUNCH, "Crunch", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_MONSTER, "Monster", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_TWEEDFACE, "Tweedface", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_BLACKBASS, "Blackbass", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_STONER_ROCK, "Stoner Rock", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_DARK_METAL, "Dark Metal", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_TRANSISTOR, "Transistor", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_BROWN_SOUND, "Brown Sound", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_MOSH, "Mosh", AMP_TYPE, AMP_POSITION, rp500_amp_settings, G_N_ELEMENTS(rp500_amp_settings)}, + {AMP_TYPE_ACOUSTIC, "Dread Acoustic", AMP_TYPE, AMP_POSITION, rp500_amp_settings2, G_N_ELEMENTS(rp500_amp_settings2)}, + {AMP_TYPE_JUMBO_ACOUSTIC, "Jumbo Acoustic", AMP_TYPE, AMP_POSITION, rp500_amp_settings2, G_N_ELEMENTS(rp500_amp_settings2)}, + {AMP_TYPE_DIRECT, "Direct", AMP_TYPE, AMP_POSITION, rp500_amp_settings3, G_N_ELEMENTS(rp500_amp_settings3)}, }; static EffectGroup eq_group[] = { @@ -601,7 +692,7 @@ static EffectGroup eq_group[] = { {EQ_TYPE_WARM, "Warm", EQ_TYPE, EQ_POSITION, eq_settings, G_N_ELEMENTS(eq_settings)}, }; -static EffectGroup amp_cab_group[] = { +static EffectGroup rp250_amp_cab_group[] = { {AMP_CAB_DIRECT, "Direct", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, {AMP_CAB_CHAMP, "Champ 1x8", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, {AMP_CAB_DELUXE, "Deluxe 1x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, @@ -619,6 +710,35 @@ static EffectGroup amp_cab_group[] = { {AMP_CAB_DIGI_VNTG, "DigiTech Vntg 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, }; +static EffectGroup rp500_amp_cab_group[] = { + {AMP_CAB_DIRECT, "Direct", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_CHAMP, "Champ", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DELUXE, "Deluxe", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DELUXE_REVERB, "Deluxe Reverb 1x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_BRITISH1_12, "British 1x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_GA1_12, "GA 1x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_BLONDE2_12, "Blonde 2x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_TWIN, "Twin 2x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_BRITISH2_12, "British 2x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_JAZZ2_12, "Jazz 2x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_BASSMAN, "Bassman 4x10", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_BRITISH4_12, "British 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_BRITISH_GREEN, "Greenback 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_FANE4_12, "Fane 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_BOUTIQUE4_12, "Boutique 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_VINTAGE, "Vintage 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_RECTO4_12, "Recto 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DIGI_SOLO, "DigiTech Solo 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DIGI_BRIGHT, "DigiTech Bright 2x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DIGI_METAL, "DigiTech Metal 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DIGI_ROCK, "DigiTech Rock 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DIGI_ALT, "DigiTech Alt 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DIGI_VNTG, "DigiTech Vintage 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DIGI_CHUNK, "DigiTech Chunk 4x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DIGI_SPANK2_12, "DigiTech Spank 2x12", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, + {AMP_CAB_DIGI_SPKR_COMP, "DigiTech Spkr Comp", AMP_CAB_TYPE, AMP_CAB_POSITION, NULL, -1}, +}; + static EffectGroup tone_lib_group[] = { {TONE_LIB_OVERDRIVE, "Overdrive", LIBRARY_TONE, LIBRARY_POSITION, NULL, -1}, {TONE_LIB_ROCK1, "Rock 1", LIBRARY_TONE, LIBRARY_POSITION, NULL, -1}, @@ -689,8 +809,12 @@ static Effect wah_effect[] = { {NULL, WAH_ON_OFF, WAH_POSITION, wah_group, G_N_ELEMENTS(wah_group)}, }; -static Effect comp_effect[] = { - {NULL, COMP_ON_OFF, COMP_POSITION, comp_group, G_N_ELEMENTS(comp_group)}, +static Effect rp250_comp_effect[] = { + {NULL, COMP_ON_OFF, COMP_POSITION, rp250_comp_group, G_N_ELEMENTS(rp250_comp_group)}, +}; + +static Effect rp500_comp_effect[] = { + {NULL, COMP_ON_OFF, COMP_POSITION, rp500_comp_group, G_N_ELEMENTS(rp500_comp_group)}, }; static Effect dist_effect[] = { @@ -713,20 +837,25 @@ static Effect reverb_effect[] = { {NULL, REVERB_ON_OFF, REVERB_POSITION, reverb_group, G_N_ELEMENTS(reverb_group)}, }; -static Effect amp_effect[] = { - {NULL, AMP_ON_OFF, AMP_POSITION, amp_group, G_N_ELEMENTS(amp_group)}, - {"Cabinet", -1, -1, amp_cab_group, G_N_ELEMENTS(amp_cab_group)}, +static Effect rp250_amp_effect[] = { + {NULL, AMP_ON_OFF, AMP_POSITION, rp250_amp_group, G_N_ELEMENTS(rp250_amp_group)}, + {"Cabinet", -1, -1, rp250_amp_cab_group, G_N_ELEMENTS(rp250_amp_cab_group)}, +}; + +static Effect rp500_amp_effect[] = { + {NULL, AMP_ON_OFF, AMP_POSITION, rp500_amp_group, G_N_ELEMENTS(rp500_amp_group)}, + {"Cabinet", -1, -1, rp500_amp_cab_group, G_N_ELEMENTS(rp500_amp_cab_group)}, }; static Effect eq_effect[] = { {NULL, EQ_ON_OFF, EQ_POSITION, eq_group, G_N_ELEMENTS(eq_group)}, }; -EffectList effects[] = { +EffectList rp250_effects[] = { {"Wah", wah_effect, G_N_ELEMENTS(wah_effect)}, - {"Amplifier", amp_effect, G_N_ELEMENTS(amp_effect)}, + {"Amplifier", rp250_amp_effect, G_N_ELEMENTS(rp250_amp_effect)}, {"Equalizer", eq_effect, G_N_ELEMENTS(eq_effect)}, - {"Compressor", comp_effect, G_N_ELEMENTS(comp_effect)}, + {"Compressor", rp250_comp_effect, G_N_ELEMENTS(rp250_comp_effect)}, {"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)}, @@ -734,7 +863,21 @@ EffectList effects[] = { {"Reverb", reverb_effect, G_N_ELEMENTS(reverb_effect)}, }; -int n_effects = G_N_ELEMENTS(effects); +int n_rp250_effects = G_N_ELEMENTS(rp250_effects); + +EffectList rp500_effects[] = { + {"Wah", wah_effect, G_N_ELEMENTS(wah_effect)}, + {"Amplifier", rp500_amp_effect, G_N_ELEMENTS(rp500_amp_effect)}, + {"Equalizer", eq_effect, G_N_ELEMENTS(eq_effect)}, + {"Compressor", rp500_comp_effect, G_N_ELEMENTS(rp500_comp_effect)}, + {"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)}, + {"Reverb", reverb_effect, G_N_ELEMENTS(reverb_effect)}, +}; + +int n_rp500_effects = G_N_ELEMENTS(rp500_effects); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ @@ -1016,3 +1159,42 @@ void modifier_group_free(ModifierGroup *modifier_group) modifier_group->group); g_slice_free(ModifierGroup, modifier_group); } + +/** + * \param device_id Device ID + * \param family_id Family ID + * \param product_id Product ID + * \param list Variable to hold effect list + * \param n_list Variable to hold length of effect list + * + * Gets appropiate effect list basing on device, family and product IDs. + * + * \return TRUE if list and n_list were set, FALSE otherwise. + **/ +gboolean get_effect_list(unsigned char device_id, unsigned char family_id, + unsigned char product_id, + EffectList **list, int *n_list) +{ + switch (family_id) { + case 0x5E: /* RP series */ + switch (product_id) { + case 0x02: /* RP250 */ + *list = rp250_effects; + *n_list = n_rp250_effects; + return TRUE; + case 0x05: /* RP500 */ + *list = rp500_effects; + *n_list = n_rp500_effects; + return TRUE; + default: + g_warning("Unsupported RP model. Using RP250-compability mode!"); + *list = rp250_effects; + *n_list = n_rp250_effects; + return TRUE; + } + default: + g_error("Unsupported device family!"); + return FALSE; + } +} + diff --git a/effects.h b/effects.h index d23ced1..0488a93 100644 --- a/effects.h +++ b/effects.h @@ -62,5 +62,8 @@ typedef struct { ModifierGroup *modifier_linkable_list(); void modifier_group_free(ModifierGroup *modifier_group); +gboolean get_effect_list(unsigned char device_id, unsigned char family_id, + unsigned char product_id, + EffectList **list, int *n_list); #endif /* GDIGI_EFFECTS_H */ diff --git a/gdigi.c b/gdigi.c index a8ed2f0..66b475d 100644 --- a/gdigi.c +++ b/gdigi.c @@ -566,9 +566,15 @@ int main(int argc, char *argv[]) { if (request_who_am_i(&device_id, &family_id, &product_id) == FALSE) { show_error_message(NULL, "No suitable reply from device"); } else { - gui_create(); - gtk_main(); - gui_free(); + EffectList *list; + int n_list; + if (get_effect_list(device_id, family_id, product_id, &list, &n_list) == FALSE) { + show_error_message(NULL, "Unsupported hardware. Please check HACKING file."); + } else { + gui_create(list, n_list); + gtk_main(); + gui_free(); + } } } diff --git a/gdigi.h b/gdigi.h index ee77b1e..1b9907c 100644 --- a/gdigi.h +++ b/gdigi.h @@ -41,7 +41,8 @@ enum { enum { COMP_TYPE_DIGI = 195, - COMP_TYPE_CS = 196 + COMP_TYPE_CS = 196, + COMP_TYPE_DYNA = 197 }; #define COMP_TYPE 207 @@ -52,6 +53,8 @@ enum { #define COMP_TONE 209 #define COMP_ATTACK 211 #define COMP_LEVEL 210 +#define COMP_SENSITIVITY 213 +#define COMP_OUTPUT 212 enum { PICKUP_TYPE_HB_SC = 66, @@ -131,24 +134,55 @@ enum { AMP_TYPE_TWEED_CHAMP = 307, AMP_TYPE_TWEED_DELUXE = 308, AMP_TYPE_TWEED_BASSMAN = 309, + AMP_TYPE_BROWN_BASSMAN = 310, AMP_TYPE_BLACKFACE_TWIN = 311, AMP_TYPE_BLACKFACE_DELUXE = 312, + AMP_TYPE_PLEXI_JTM_45 = 313, AMP_TYPE_SUPER_LEAD_PLEXI = 314, + AMP_TYPE_PLEXI_JUMP_PANEL = 315, AMP_TYPE_MASTER_VOLUME = 316, AMP_TYPE_JCM800 = 317, AMP_TYPE_JCM900 = 318, + AMP_TYPE_JCM2000 = 319, AMP_TYPE_AC15 = 322, AMP_TYPE_AC30TB = 323, AMP_TYPE_HIWATT_100 = 324, AMP_TYPE_BOOGIE_MARK_II = 320, + AMP_TYPE_BOOGIE_MARK_IV = 371, AMP_TYPE_DUAL_RECTIFIER = 321, + AMP_TYPE_TRIPLE_RECTIFIER = 370, + AMP_TYPE_LEGACY_VL100 = 327, AMP_TYPE_MATCHLESS_HC30 = 326, + AMP_TYPE_SOLDANO_100 = 325, + AMP_TYPE_SUPERGROUP = 381, + AMP_TYPE_GA40 = 380, + AMP_TYPE_OR120 = 372, + AMP_TYPE_PV5150II = 373, + AMP_TYPE_RG100 = 374, + AMP_TYPE_JC120_JAZZ = 375, + AMP_TYPE_SOLAR100 = 376, AMP_TYPE_SOLO = 331, AMP_TYPE_METAL = 332, AMP_TYPE_BRIGHT = 333, + AMP_TYPE_CHUNK = 334, AMP_TYPE_CLEAN = 335, AMP_TYPE_HIGH_GAIN = 337, + AMP_TYPE_BLUES = 338, + AMP_TYPE_FUZZ = 339, + AMP_TYPE_SPANK = 330, + AMP_TYPE_GSP2101_CLEAN_TUBE = 328, + AMP_TYPE_GSP2101_SAT_TUBE = 329, + AMP_TYPE_CRUNCH = 336, + AMP_TYPE_MONSTER = 377, + AMP_TYPE_TWEEDFACE = 378, + AMP_TYPE_BLACKBASS = 379, + AMP_TYPE_STONER_ROCK = 368, + AMP_TYPE_DARK_METAL = 369, + AMP_TYPE_TRANSISTOR = 382, + AMP_TYPE_BROWN_SOUND = 383, + AMP_TYPE_MOSH = 384, AMP_TYPE_ACOUSTIC = 341, + AMP_TYPE_JUMBO_ACOUSTIC = 340, AMP_TYPE_DIRECT = 306 }; @@ -165,6 +199,9 @@ enum { #define AMP_GAIN 2497 #define AMP_LEVEL 2498 +#define AMP_BASS 2507 +#define AMP_MID 2508 +#define AMP_TREBLE 2509 #define AMP_CAB_TYPE 2560 #define AMP_CAB_POSITION 9 @@ -173,18 +210,29 @@ enum { #define AMP_CAB_DIRECT 570 #define AMP_CAB_CHAMP 571 #define AMP_CAB_DELUXE 572 +#define AMP_CAB_DELUXE_REVERB 573 +#define AMP_CAB_BRITISH1_12 623 +#define AMP_CAB_GA1_12 624 +#define AMP_CAB_BLONDE2_12 577 #define AMP_CAB_TWIN 576 #define AMP_CAB_BRITISH2_12 613 +#define AMP_CAB_JAZZ2_12 626 #define AMP_CAB_BASSMAN 579 #define AMP_CAB_BRITISH4_12 614 #define AMP_CAB_BRITISH_GREEN 616 +#define AMP_CAB_FANE4_12 584 +#define AMP_CAB_BOUTIQUE4_12 583 #define AMP_CAB_VINTAGE 622 +#define AMP_CAB_RECTO4_12 625 #define AMP_CAB_DIGI_SOLO 609 #define AMP_CAB_DIGI_BRIGHT 611 #define AMP_CAB_DIGI_METAL 618 #define AMP_CAB_DIGI_ROCK 619 #define AMP_CAB_DIGI_ALT 620 #define AMP_CAB_DIGI_VNTG 621 +#define AMP_CAB_DIGI_CHUNK 612 +#define AMP_CAB_DIGI_SPANK2_12 608 +#define AMP_CAB_DIGI_SPKR_COMP 585 #define EQ_TYPE 3202 #define EQ_ON_OFF 3212 diff --git a/gui.c b/gui.c index cc66bbe..b8c1e1f 100644 --- a/gui.c +++ b/gui.c @@ -620,6 +620,7 @@ typedef struct { static SupportedFileTypes file_types[] = { {"RP250Preset", "*.rp250p"}, + {"RP500Preset", "*.rp500p"}, }; static guint n_file_types = G_N_ELEMENTS(file_types); @@ -838,7 +839,7 @@ static void add_menubar(GtkWidget *window, GtkWidget *vbox) /** * Creates main window. **/ -void gui_create() +void gui_create(EffectList *effects, int n_effects) { GtkWidget *window; GtkWidget *vbox; diff --git a/gui.h b/gui.h index 17774ea..3da352b 100644 --- a/gui.h +++ b/gui.h @@ -17,8 +17,10 @@ #ifndef GDIGI_GUI_H #define GDIGI_GUI_H +#include "effects.h" + void show_error_message(GtkWidget *parent, gchar *message); -void gui_create(); +void gui_create(EffectList *list, int n_list); void gui_free(); #endif /* GDIGI_GUI_H */ diff --git a/preset.c b/preset.c index 2f27c76..c3099c8 100644 --- a/preset.c +++ b/preset.c @@ -191,6 +191,8 @@ Preset *create_preset_from_data(GString *data) gint x; gint tmp; + g_return_val_if_fail(data != NULL, NULL); + x = 0x09; n = 0; total = (unsigned char)data->str[x];