code splitting
This commit is contained in:
6
Makefile
6
Makefile
@@ -9,8 +9,8 @@ LIBS = `pkg-config --libs glib-2.0 gtk+-2.0 alsa`
|
|||||||
|
|
||||||
all: gdigi
|
all: gdigi
|
||||||
|
|
||||||
gdigi: gdigi.o tests.o gui.o
|
gdigi: gdigi.o tests.o gui.o effects.o
|
||||||
$(CC) $(LIBS) $(OFLAG) gdigi gdigi.o tests.o gui.o
|
$(CC) $(LIBS) $(OFLAG) gdigi gdigi.o tests.o gui.o effects.o
|
||||||
|
|
||||||
gdigi.o: gdigi.c
|
gdigi.o: gdigi.c
|
||||||
|
|
||||||
@@ -18,6 +18,8 @@ tests.o: tests.c
|
|||||||
|
|
||||||
gui.o: gui.c
|
gui.o: gui.c
|
||||||
|
|
||||||
|
effects.o: effects.c
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm *.o
|
rm *.o
|
||||||
|
|
||||||
|
|||||||
485
effects.c
Normal file
485
effects.c
Normal file
@@ -0,0 +1,485 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2009 Tomasz Moń <desowin@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; under version 3 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "gdigi.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
|
static SettingsWidget wah_widgets[] = {
|
||||||
|
{"Wah min", set_wah_min, NULL, 0.0, 99.0},
|
||||||
|
{"Wah max", set_wah_max, NULL, 0.0, 99.0},
|
||||||
|
{"Wah level", set_wah_level, NULL, 0.0, 12.0},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget comp_digi_widgets[] = {
|
||||||
|
{"Compressor sustain", set_comp_sustain, NULL, 0.0, 99.0},
|
||||||
|
{"Compressor tone", set_comp_tone, NULL, 0.0, 99.0},
|
||||||
|
{"Compressor attack", set_comp_attack, NULL, 0.0, 99.0},
|
||||||
|
{"Compressor level", set_comp_level, NULL, 0.0, 99.0},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget comp_cs_widgets[] = {
|
||||||
|
{"Compressor sustain", set_comp_sustain, NULL, 0.0, 99.0},
|
||||||
|
{"Compressor attack", set_comp_attack, NULL, 0.0, 99.0},
|
||||||
|
{"Compressor level", set_comp_level, NULL, 0.0, 99.0},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_screamer_widgets[] = {
|
||||||
|
{"Screamer drive", NULL, set_dist_option, 0.0, 99.0, DIST_SCREAMER_DRIVE},
|
||||||
|
{"Screamer tone", NULL, set_dist_option, 0.0, 99.0, DIST_SCREAMER_TONE},
|
||||||
|
{"Screamer level", NULL, set_dist_option, 0.0, 99.0, DIST_SCREAMER_LVL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_808_widgets[] = {
|
||||||
|
{"808 overdrive", NULL, set_dist_option, 0.0, 99.0, DIST_808_OVERDRIVE},
|
||||||
|
{"808 tone", NULL, set_dist_option, 0.0, 99.0, DIST_808_TONE},
|
||||||
|
{"808 level", NULL, set_dist_option, 0.0, 99.0, DIST_808_LVL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_guyod_widgets[] = {
|
||||||
|
{"GuyOD drive", NULL, set_dist_option, 0.0, 99.0, DIST_GUYOD_DRIVE},
|
||||||
|
{"GuyOD level", NULL, set_dist_option, 0.0, 99.0, DIST_GUYOD_LVL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_dod250_widgets[] = {
|
||||||
|
{"DOD250 gain", NULL, set_dist_option, 0.0, 99.0, DIST_DOD250_GAIN},
|
||||||
|
{"DOD250 level", NULL, set_dist_option, 0.0, 99.0, DIST_DOD250_LVL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_rodent_widgets[] = {
|
||||||
|
{"Rodent dist", NULL, set_dist_option, 0.0, 99.0, DIST_RODENT_DIST},
|
||||||
|
{"Rodent filter", NULL, set_dist_option, 0.0, 99.0, DIST_RODENT_FILTER},
|
||||||
|
{"Rodent level", NULL, set_dist_option, 0.0, 99.0, DIST_RODENT_LVL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_mx_widgets[] = {
|
||||||
|
{"MX dist", NULL, set_dist_option, 0.0, 99.0, DIST_MX_DIST},
|
||||||
|
{"MX output", NULL, set_dist_option, 0.0, 99.0, DIST_MX_OUTPUT},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_ds_widgets[] = {
|
||||||
|
{"DS gain", NULL, set_dist_option, 0.0, 99.0, DIST_DS_GAIN},
|
||||||
|
{"DS tone", NULL, set_dist_option, 0.0, 99.0, DIST_DS_TONE},
|
||||||
|
{"DS level", NULL, set_dist_option, 0.0, 99.0, DIST_DS_LVL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_grunge_widgets[] = {
|
||||||
|
{"Grunge", NULL, set_dist_option, 0.0, 99.0, DIST_GRUNGE_GRUNGE},
|
||||||
|
{"Grunge face", NULL, set_dist_option, 0.0, 99.0, DIST_GRUNGE_FACE},
|
||||||
|
{"Grunge loud", NULL, set_dist_option, 0.0, 99.0, DIST_GRUNGE_LOUD},
|
||||||
|
{"Grunge butt", NULL, set_dist_option, 0.0, 99.0, DIST_GRUNGE_BUTT},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_zone_widgets[] = {
|
||||||
|
{"Zone gain", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_GAIN},
|
||||||
|
{"Zone low", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_LOW},
|
||||||
|
{"Zone mid level", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_MID_LVL},
|
||||||
|
{"Zone mid freq", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_MID_FREQ},
|
||||||
|
{"Zone high", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_HIGH},
|
||||||
|
{"Zone level", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_LEVEL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_death_widgets[] = {
|
||||||
|
{"Death low", NULL, set_dist_option, 0.0, 99.0, DIST_DEATH_LOW},
|
||||||
|
{"Death mid", NULL, set_dist_option, 0.0, 99.0, DIST_DEATH_MID},
|
||||||
|
{"Death high", NULL, set_dist_option, 0.0, 99.0, DIST_DEATH_HIGH},
|
||||||
|
{"Death level", NULL, set_dist_option, 0.0, 99.0, DIST_DEATH_LVL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_gonk_widgets[] = {
|
||||||
|
{"Gonk gonk", NULL, set_dist_option, 0.0, 99.0, DIST_GONK_GONK},
|
||||||
|
{"Gonk smear", NULL, set_dist_option, 0.0, 99.0, DIST_GONK_SMEAR},
|
||||||
|
{"Gonk suck", NULL, set_dist_option, 0.0, 99.0, DIST_GONK_SUCK},
|
||||||
|
{"Gonk heave", NULL, set_dist_option, 0.0, 99.0, DIST_GONK_HEAVE},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_fuzzy_widgets[] = {
|
||||||
|
{"Fuzzy fuzz", NULL, set_dist_option, 0.0, 99.0, DIST_FUZZY_FUZZ},
|
||||||
|
{"Fuzzy volume", NULL, set_dist_option, 0.0, 99.0, DIST_FUZZY_VOLUME},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget dist_mp_widgets[] = {
|
||||||
|
{"MP sustain", NULL, set_dist_option, 0.0, 99.0, DIST_MP_SUSTAIN},
|
||||||
|
{"MP tone", NULL, set_dist_option, 0.0, 99.0, DIST_MP_TONE},
|
||||||
|
{"MP volume", NULL, set_dist_option, 0.0, 99.0, DIST_MP_VOLUME},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget eq_widgets[] = {
|
||||||
|
{"EQ gain", set_eq_gain, NULL, 0.0, 99.0},
|
||||||
|
{"EQ level", set_eq_level, NULL, 0.0, 99.0},
|
||||||
|
// TODO: make those display propertly (display range -12 to 12)
|
||||||
|
{"EQ bass", set_eq_bass, NULL, 0.0, 24.0},
|
||||||
|
{"EQ mid", set_eq_mid, NULL, 0.0, 24.0},
|
||||||
|
{"EQ treble", set_eq_treble, NULL, 0.0, 24.0},
|
||||||
|
// TODO: make this display propertly (display range 300 to 5000)
|
||||||
|
{"EQ mid Hz", set_eq_mid_hz, NULL, 0.0, 4700.0},
|
||||||
|
// TODO: make this display propertly (display range 500 to 8000)
|
||||||
|
{"EQ treb Hz", set_eq_treb_hz, NULL, 0.0, 7500.0},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget noisegate_gate_widgets[] = {
|
||||||
|
{"Gate treshold", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_GATE_TRESHOLD},
|
||||||
|
{"Gate attack", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_ATTACK},
|
||||||
|
{"Gate release", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_RELEASE},
|
||||||
|
{"Gate attn", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_ATTN},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget noisegate_swell_widgets[] = {
|
||||||
|
{"Swell sens", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_SWELL_SENS},
|
||||||
|
{"Swell attack", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_ATTACK},
|
||||||
|
{"Swell release", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_RELEASE},
|
||||||
|
{"Swell attn", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_ATTN},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_ce_widgets[] = {
|
||||||
|
{"CE chorus speed", NULL, set_chorusfx_option, 0.0, 99.0, CE_CHORUS_SPEED},
|
||||||
|
{"CE chorus depth", NULL, set_chorusfx_option, 0.0, 99.0, CE_CHORUS_DEPTH},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_dual_widgets[] = {
|
||||||
|
{"Dual chorus speed", NULL, set_chorusfx_option, 0.0, 99.0, DUAL_CHORUS_SPEED},
|
||||||
|
{"Dual chorus depth", NULL, set_chorusfx_option, 0.0, 99.0, DUAL_CHORUS_DEPTH},
|
||||||
|
{"Dual chorus level", NULL, set_chorusfx_option, 0.0, 99.0, DUAL_CHORUS_LEVEL},
|
||||||
|
// TODO: DUAL_CHORUS_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_multi_widgets[] = {
|
||||||
|
{"Multi chorus speed", NULL, set_chorusfx_option, 0.0, 99.0, MULTI_CHORUS_SPEED},
|
||||||
|
{"Multi chorus depth", NULL, set_chorusfx_option, 0.0, 99.0, MULTI_CHORUS_DEPTH},
|
||||||
|
{"Multi chorus level", NULL, set_chorusfx_option, 0.0, 99.0, MULTI_CHORUS_LEVEL},
|
||||||
|
// TODO: MULTI_CHORUS_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_flanger_widgets[] = {
|
||||||
|
{"Flanger speed", NULL, set_chorusfx_option, 0.0, 99.0, FLANGER_SPEED},
|
||||||
|
{"Flanger depth", NULL, set_chorusfx_option, 0.0, 99.0, FLANGER_DEPTH},
|
||||||
|
{"Flanger regen", NULL, set_chorusfx_option, 0.0, 99.0, FLANGER_REGEN},
|
||||||
|
{"Flanger level", NULL, set_chorusfx_option, 0.0, 99.0, FLANGER_LEVEL},
|
||||||
|
// TODO: FLANGER_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_mxr_flanger_widgets[] = {
|
||||||
|
{"MXR flanger speed", NULL, set_chorusfx_option, 0.0, 99.0, MXR_FLANGER_SPEED},
|
||||||
|
{"MXR flanger width", NULL, set_chorusfx_option, 0.0, 99.0, MXR_FLANGER_WIDTH},
|
||||||
|
{"MXR flanger regen", NULL, set_chorusfx_option, 0.0, 99.0, MXR_FLANGER_REGEN},
|
||||||
|
{"MXR flanger manual", NULL, set_chorusfx_option, 0.0, 99.0, MXR_FLANGER_MANUAL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_phaser_widgets[] = {
|
||||||
|
{"Phaser speed", NULL, set_chorusfx_option, 0.0, 99.0, PHASER_SPEED},
|
||||||
|
{"Phaser depth", NULL, set_chorusfx_option, 0.0, 99.0, PHASER_DEPTH},
|
||||||
|
{"Phaser regen", NULL, set_chorusfx_option, 0.0, 99.0, PHASER_REGEN},
|
||||||
|
{"Phaser level", NULL, set_chorusfx_option, 0.0, 99.0, PHASER_LEVEL},
|
||||||
|
// TODO: PHASER_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_vibrato_widgets[] = {
|
||||||
|
{"Vibrato speed", NULL, set_chorusfx_option, 0.0, 99.0, VIBRATO_SPEED},
|
||||||
|
{"Vibrato depth", NULL, set_chorusfx_option, 0.0, 99.0, VIBRATO_DEPTH},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_rotary_widgets[] = {
|
||||||
|
{"Rotary speed", NULL, set_chorusfx_option, 0.0, 99.0, ROTARY_SPEED},
|
||||||
|
{"Rotary intensity", NULL, set_chorusfx_option, 0.0, 99.0, ROTARY_INTENSITY},
|
||||||
|
{"Rotary doppler", NULL, set_chorusfx_option, 0.0, 99.0, ROTARY_DOPPLER},
|
||||||
|
{"Rotary crossover", NULL, set_chorusfx_option, 0.0, 99.0, ROTARY_CROSSOVER},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_vibropan_widgets[] = {
|
||||||
|
{"Vibropan speed", NULL, set_chorusfx_option, 0.0, 99.0, VIBROPAN_SPEED},
|
||||||
|
{"Vibropan depth", NULL, set_chorusfx_option, 0.0, 99.0, VIBROPAN_DEPTH},
|
||||||
|
{"Vibropan vibra", NULL, set_chorusfx_option, 0.0, 99.0, VIBROPAN_VIBRA},
|
||||||
|
// TODO: VIBROPAN_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_tremolo_widgets[] = {
|
||||||
|
{"Tremolo speed", NULL, set_chorusfx_option, 0.0, 99.0, TREMOLO_SPEED},
|
||||||
|
{"Tremolo depth", NULL, set_chorusfx_option, 0.0, 99.0, TREMOLO_DEPTH},
|
||||||
|
// TODO: TREMOLO_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_panner_widgets[] = {
|
||||||
|
{"Panner speed", NULL, set_chorusfx_option, 0.0, 99.0, PANNER_SPEED},
|
||||||
|
{"Panner depth", NULL, set_chorusfx_option, 0.0, 99.0, PANNER_DEPTH},
|
||||||
|
// TODO: PANNER_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_envelope_widgets[] = {
|
||||||
|
{"Envelope sensitivity", NULL, set_chorusfx_option, 0.0, 99.0, ENVELOPE_SENSITIVITY},
|
||||||
|
{"Envelope range", NULL, set_chorusfx_option, 0.0, 99.0, ENVELOPE_RANGE},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_autoya_widgets[] = {
|
||||||
|
{"AutoYa speed", NULL, set_chorusfx_option, 0.0, 99.0, AUTOYA_SPEED},
|
||||||
|
{"AutoYa intensity", NULL, set_chorusfx_option, 0.0, 99.0, AUTOYA_INTENSITY},
|
||||||
|
{"AutoYa range", NULL, set_chorusfx_option, 0.0, 49.0, AUTOYA_RANGE},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_yaya_widgets[] = {
|
||||||
|
{"YaYa pedal", NULL, set_chorusfx_option, 0.0, 99.0, YAYA_PEDAL},
|
||||||
|
{"YaYa intensity", NULL, set_chorusfx_option, 0.0, 99.0, YAYA_INTENSITY},
|
||||||
|
{"YaYa range", NULL, set_chorusfx_option, 0.0, 49.0, YAYA_RANGE},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_step_filter_widgets[] = {
|
||||||
|
{"Step filter speed", NULL, set_chorusfx_option, 0.0, 99.0, STEP_FILTER_SPEED},
|
||||||
|
{"Step filter intensity", NULL, set_chorusfx_option, 0.0, 99.0, STEP_FILTER_INTENSITY},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_whammy_widgets[] = {
|
||||||
|
{"Whammy pedal", NULL, set_chorusfx_option, 0.0, 99.0, WHAMMY_PEDAL},
|
||||||
|
{"Whammy mix", NULL, set_chorusfx_option, 0.0, 99.0, WHAMMY_MIX},
|
||||||
|
//TODO: WHAMMY_AMOUNT with valid options:
|
||||||
|
// WHAMMY_OCT_UP, WHAMMY_2OCT_UP, WHAMMY_2ND_DN, WHAMMY_RV_2ND,
|
||||||
|
// WHAMMY_4TH_DN, WHAMMY_OCT_DN, WHAMMY_2OCT_DN, WHAMMY_DIV_BMB,
|
||||||
|
// WHAMMY_M3_MA, WHAMMY_2ND_MA3, WHAMMY_3RD_4TH, WHAMMY_4TH_5TH,
|
||||||
|
// WHAMMY_5TH_OCT, WHAMMY_HOCT_UP, WHAMMY_HOCT_DN, WHAMMY_OCT_UD
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_pitch_shift_widgets[] = {
|
||||||
|
// TODO: make this display propertly (display range -24 to 24)
|
||||||
|
{"Pitch amount", NULL, set_chorusfx_option, 0.0, 48.0, PITCH_AMOUNT},
|
||||||
|
{"Pitch mix", NULL, set_chorusfx_option, 0.0, 99.0, PITCH_MIX},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_detune_widgets[] = {
|
||||||
|
{"Detune amount", NULL, set_chorusfx_option, 0.0, 48.0, DETUNE_AMOUNT},
|
||||||
|
{"Detune level", NULL, set_chorusfx_option, 0.0, 99.0, DETUNE_LEVEL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget chorusfx_ips_widgets[] = {
|
||||||
|
// TODO: IPS_SHIFT_AMOUNT with valid options:
|
||||||
|
// IPS_7TH_DN, IPS_6TH_DN, IPS_5TH_DN, IPS_4TH_DN, IPS_3RD_DN,
|
||||||
|
// IPS_2ND_DN, IPS_2ND_UP, IPS_3RD_UP, IPS_4TH_UP, IPS_5TH_UP,
|
||||||
|
// IPS_6TH_UP, IPS_7TH_UP, IPS_OCT_U
|
||||||
|
|
||||||
|
// TODO: IPS_KEY with valid options:
|
||||||
|
// IPS_E, IPS_F, IPS_GB, IPS_G, IPS_AB, IPS_A, IPS_BB, IPS_B,
|
||||||
|
// IPS_C, IPS_DD, IPS_D, IPS_EB
|
||||||
|
|
||||||
|
// TODO: IPS_SCALE with valid options:
|
||||||
|
// IPS_MAJOR, IPS_MINOR, IPS_DORIA, IPS_MIXLYD, IPS_LYDIAN, IPS_HMINO
|
||||||
|
|
||||||
|
{"IPS level", NULL, set_chorusfx_option, 0.0, 99.0, IPS_LEVEL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget delay_analog_widgets[] = {
|
||||||
|
// TODO: make this display propertly (10 msec to 5 sec)
|
||||||
|
{"Delay time", set_delay_time, NULL, 0.0, 139.0},
|
||||||
|
{"Delay analog level", NULL, set_delay_option, 0.0, 99.0, ANALOG_LEVEL},
|
||||||
|
// TODO: make last value display propertly
|
||||||
|
{"Delay analog repeats", NULL, set_delay_option, 0.0, 100.0, ANALOG_REPEATS},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget delay_digital_widgets[] = {
|
||||||
|
// TODO: make this display propertly (10 msec to 5 sec)
|
||||||
|
{"Delay time", set_delay_time, NULL, 0.0, 139.0},
|
||||||
|
{"Delay digital level", NULL, set_delay_option, 0.0, 99.0, DIGITAL_LEVEL},
|
||||||
|
// TODO: make last value display propertly
|
||||||
|
{"Delay digital repeats", NULL, set_delay_option, 0.0, 100.0, DIGITAL_REPEATS},
|
||||||
|
{"Delay digital ducker thresh", NULL, set_delay_option, 0.0, 99.0, DIGITAL_DUCKER_THRESH},
|
||||||
|
{"Delay digital ducker level", NULL, set_delay_option, 0.0, 99.0, DIGITAL_DUCKER_LEVEL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget delay_modulated_widgets[] = {
|
||||||
|
// TODO: make this display propertly (10 msec to 5 sec)
|
||||||
|
{"Delay time", set_delay_time, NULL, 0.0, 139.0},
|
||||||
|
{"Delay modulated level", NULL, set_delay_option, 0.0, 99.0, MODULATED_LEVEL},
|
||||||
|
// TODO: make last value display propertly
|
||||||
|
{"Delay modulated repeats", NULL, set_delay_option, 0.0, 100.0, MODULATED_REPEATS},
|
||||||
|
{"Delay modulated depth", NULL, set_delay_option, 0.0, 99.0, MODULATED_DEPTH},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget delay_pong_widgets[] = {
|
||||||
|
// TODO: make this display propertly (10 msec to 5 sec)
|
||||||
|
{"Delay time", set_delay_time, NULL, 0.0, 139.0},
|
||||||
|
{"Delay pong level", NULL, set_delay_option, 0.0, 99.0, PONG_LEVEL},
|
||||||
|
// TODO: make last value display propertly
|
||||||
|
{"Delay pong repeats", NULL, set_delay_option, 0.0, 100.0, PONG_REPEATS},
|
||||||
|
{"Delay pong ducker thresh", NULL, set_delay_option, 0.0, 99.0, PONG_DUCKER_THRESH},
|
||||||
|
{"Delay pong ducker level", NULL, set_delay_option, 0.0, 99.0, PONG_DUCKER_LEVEL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget delay_tape_widgets[] = {
|
||||||
|
// TODO: make this display propertly (10 msec to 5 sec)
|
||||||
|
{"Delay time", set_delay_time, NULL, 0.0, 139.0},
|
||||||
|
{"Delay tape level", NULL, set_delay_option, 0.0, 99.0, TAPE_LEVEL},
|
||||||
|
// TODO: make last value display propertly
|
||||||
|
{"Delay tape repeats", NULL, set_delay_option, 0.0, 100.0, TAPE_REPEATS},
|
||||||
|
{"Delay tape wow", NULL, set_delay_option, 0.0, 99.0, TAPE_WOW},
|
||||||
|
{"Delay tape flutter", NULL, set_delay_option, 0.0, 99.0, TAPE_FLUTTER},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget reverb_twin_widgets[] = {
|
||||||
|
{"Twin reverb", NULL, set_reverb_option, 0.0, 99.0, TWIN_REVERB},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget reverb_lex_ambience_widgets[] = {
|
||||||
|
{"Predelay", NULL, set_reverb_option, 0.0, 15.0, LEX_AMBIENCE_PREDELAY},
|
||||||
|
{"Decay", NULL, set_reverb_option, 0.0, 99.0, LEX_AMBIENCE_DECAY},
|
||||||
|
{"Liveliness", NULL, set_reverb_option, 0.0, 99.0, LEX_AMBIENCE_LIVELINESS},
|
||||||
|
{"Level", NULL, set_reverb_option, 0.0, 99.0, LEX_AMBIENCE_LEVEL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget reverb_lex_studio_widgets[] = {
|
||||||
|
{"Predelay", NULL, set_reverb_option, 0.0, 15.0, LEX_STUDIO_PREDELAY},
|
||||||
|
{"Decay", NULL, set_reverb_option, 0.0, 99.0, LEX_STUDIO_DECAY},
|
||||||
|
{"Liveliness", NULL, set_reverb_option, 0.0, 99.0, LEX_STUDIO_LIVELINESS},
|
||||||
|
{"Level", NULL, set_reverb_option, 0.0, 99.0, LEX_STUDIO_LEVEL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget reverb_lex_room_widgets[] = {
|
||||||
|
{"Predelay", NULL, set_reverb_option, 0.0, 15.0, LEX_ROOM_PREDELAY},
|
||||||
|
{"Decay", NULL, set_reverb_option, 0.0, 99.0, LEX_ROOM_DECAY},
|
||||||
|
{"Liveliness", NULL, set_reverb_option, 0.0, 99.0, LEX_ROOM_LIVELINESS},
|
||||||
|
{"Level", NULL, set_reverb_option, 0.0, 99.0, LEX_ROOM_LEVEL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget reverb_lex_hall_widgets[] = {
|
||||||
|
{"Predelay", NULL, set_reverb_option, 0.0, 15.0, LEX_HALL_PREDELAY},
|
||||||
|
{"Decay", NULL, set_reverb_option, 0.0, 99.0, LEX_HALL_DECAY},
|
||||||
|
{"Liveliness", NULL, set_reverb_option, 0.0, 99.0, LEX_HALL_LIVELINESS},
|
||||||
|
{"Level", NULL, set_reverb_option, 0.0, 99.0, LEX_HALL_LEVEL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static SettingsWidget reverb_emt240_plate_widgets[] = {
|
||||||
|
{"Predelay", NULL, set_reverb_option, 0.0, 15.0, EMT240_PLATE_PREDELAY},
|
||||||
|
{"Decay", NULL, set_reverb_option, 0.0, 99.0, EMT240_PLATE_DECAY},
|
||||||
|
{"Liveliness", NULL, set_reverb_option, 0.0, 99.0, EMT240_PLATE_LIVELINESS},
|
||||||
|
{"Level", NULL, set_reverb_option, 0.0, 99.0, EMT240_PLATE_LEVEL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static WidgetContainer wah_container[] = {
|
||||||
|
{WAH_TYPE_CRY, "Cry wah", set_wah_type, wah_widgets, G_N_ELEMENTS(wah_widgets)},
|
||||||
|
{WAH_TYPE_FULLRANGE, "Fullrange wah", set_wah_type, wah_widgets, G_N_ELEMENTS(wah_widgets)},
|
||||||
|
{WAH_TYPE_CLYDE, "Clyde wah", set_wah_type, wah_widgets, G_N_ELEMENTS(wah_widgets)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static WidgetContainer comp_container[] = {
|
||||||
|
{COMP_TYPE_DIGI, "Digital compressor", set_comp_type, comp_digi_widgets, G_N_ELEMENTS(comp_digi_widgets)},
|
||||||
|
{COMP_TYPE_CS, "CS compressor", set_comp_type, comp_cs_widgets, G_N_ELEMENTS(comp_cs_widgets)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static WidgetContainer dist_container[] = {
|
||||||
|
{DIST_TYPE_SCREAMER, "Screamer", set_dist_type, dist_screamer_widgets, G_N_ELEMENTS(dist_screamer_widgets)},
|
||||||
|
{DIST_TYPE_808, "808", set_dist_type, dist_808_widgets, G_N_ELEMENTS(dist_808_widgets)},
|
||||||
|
{DIST_TYPE_GUYOD, "GuyOD", set_dist_type, dist_guyod_widgets, G_N_ELEMENTS(dist_guyod_widgets)},
|
||||||
|
{DIST_TYPE_DOD250, "DOD250", set_dist_type, dist_dod250_widgets, G_N_ELEMENTS(dist_dod250_widgets)},
|
||||||
|
{DIST_TYPE_RODENT, "Rodent", set_dist_type, dist_rodent_widgets, G_N_ELEMENTS(dist_rodent_widgets)},
|
||||||
|
{DIST_TYPE_MX, "MX", set_dist_type, dist_mx_widgets, G_N_ELEMENTS(dist_mx_widgets)},
|
||||||
|
{DIST_TYPE_DS, "DS", set_dist_type, dist_ds_widgets, G_N_ELEMENTS(dist_ds_widgets)},
|
||||||
|
{DIST_TYPE_GRUNGE, "Grunge", set_dist_type, dist_grunge_widgets, G_N_ELEMENTS(dist_grunge_widgets)},
|
||||||
|
{DIST_TYPE_ZONE, "Zone", set_dist_type, dist_zone_widgets, G_N_ELEMENTS(dist_zone_widgets)},
|
||||||
|
{DIST_TYPE_DEATH, "Death", set_dist_type, dist_death_widgets, G_N_ELEMENTS(dist_death_widgets)},
|
||||||
|
{DIST_TYPE_GONK, "Gonk", set_dist_type, dist_gonk_widgets, G_N_ELEMENTS(dist_gonk_widgets)},
|
||||||
|
{DIST_TYPE_FUZZY, "Fuzzy", set_dist_type, dist_fuzzy_widgets, G_N_ELEMENTS(dist_fuzzy_widgets)},
|
||||||
|
{DIST_TYPE_MP, "MP", set_dist_type, dist_mp_widgets, G_N_ELEMENTS(dist_mp_widgets)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static WidgetContainer noisegate_container[] = {
|
||||||
|
{NOISEGATE_GATE, "Gate", set_noisegate_type, noisegate_gate_widgets, G_N_ELEMENTS(noisegate_gate_widgets)},
|
||||||
|
{NOISEGATE_SWELL, "Swell", set_noisegate_type, noisegate_swell_widgets, G_N_ELEMENTS(noisegate_swell_widgets)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static WidgetContainer chorusfx_container[] = {
|
||||||
|
{CHORUS_TYPE_CE, "CE Chorus", set_chorusfx_type, chorusfx_ce_widgets, G_N_ELEMENTS(chorusfx_ce_widgets)},
|
||||||
|
{CHORUS_TYPE_DUAL, "Dual Chorus", set_chorusfx_type, chorusfx_dual_widgets, G_N_ELEMENTS(chorusfx_dual_widgets)},
|
||||||
|
{CHORUS_TYPE_MULTI, "Multi Chorus", set_chorusfx_type, chorusfx_multi_widgets, G_N_ELEMENTS(chorusfx_multi_widgets)},
|
||||||
|
{CHORUS_TYPE_FLANGER, "Flanger", set_chorusfx_type, chorusfx_flanger_widgets, G_N_ELEMENTS(chorusfx_flanger_widgets)},
|
||||||
|
{CHORUS_TYPE_MXR_FLANGER, "MXR FLANGER", set_chorusfx_type, chorusfx_mxr_flanger_widgets, G_N_ELEMENTS(chorusfx_mxr_flanger_widgets)},
|
||||||
|
{CHORUS_TYPE_PHASER, "Phaser", set_chorusfx_type, chorusfx_phaser_widgets, G_N_ELEMENTS(chorusfx_phaser_widgets)},
|
||||||
|
{CHORUS_TYPE_VIBRATO, "Vibrato", set_chorusfx_type, chorusfx_vibrato_widgets, G_N_ELEMENTS(chorusfx_vibrato_widgets)},
|
||||||
|
{CHORUS_TYPE_ROTARY, "Rotary", set_chorusfx_type, chorusfx_rotary_widgets, G_N_ELEMENTS(chorusfx_rotary_widgets)},
|
||||||
|
{CHORUS_TYPE_VIBROPAN, "Vibropan", set_chorusfx_type, chorusfx_vibropan_widgets, G_N_ELEMENTS(chorusfx_vibropan_widgets)},
|
||||||
|
{CHORUS_TYPE_TREMOLO, "Tremolo", set_chorusfx_type, chorusfx_tremolo_widgets, G_N_ELEMENTS(chorusfx_tremolo_widgets)},
|
||||||
|
{CHORUS_TYPE_PANNER, "Panner", set_chorusfx_type, chorusfx_panner_widgets, G_N_ELEMENTS(chorusfx_panner_widgets)},
|
||||||
|
{CHORUS_TYPE_ENVELOPE, "Envelope", set_chorusfx_type, chorusfx_envelope_widgets, G_N_ELEMENTS(chorusfx_envelope_widgets)},
|
||||||
|
{CHORUS_TYPE_AUTOYA, "AutoYa", set_chorusfx_type, chorusfx_autoya_widgets, G_N_ELEMENTS(chorusfx_autoya_widgets)},
|
||||||
|
{CHORUS_TYPE_YAYA, "YaYa", set_chorusfx_type, chorusfx_yaya_widgets, G_N_ELEMENTS(chorusfx_yaya_widgets)},
|
||||||
|
{CHORUS_TYPE_STEP_FILTER, "Step Filter", set_chorusfx_type, chorusfx_step_filter_widgets, G_N_ELEMENTS(chorusfx_step_filter_widgets)},
|
||||||
|
{CHORUS_TYPE_WHAMMY, "Whammy", set_chorusfx_type, chorusfx_whammy_widgets, G_N_ELEMENTS(chorusfx_whammy_widgets)},
|
||||||
|
{CHORUS_TYPE_PITCH_SHIFT, "Pitch Shift", set_chorusfx_type, chorusfx_pitch_shift_widgets, G_N_ELEMENTS(chorusfx_pitch_shift_widgets)},
|
||||||
|
{CHORUS_TYPE_DETUNE, "Detune", set_chorusfx_type, chorusfx_detune_widgets, G_N_ELEMENTS(chorusfx_detune_widgets)},
|
||||||
|
{CHORUS_TYPE_IPS, "IPS", set_chorusfx_type, chorusfx_ips_widgets, G_N_ELEMENTS(chorusfx_ips_widgets)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static WidgetContainer delay_container[] = {
|
||||||
|
{DELAY_TYPE_ANALOG, "Analog", set_delay_type, delay_analog_widgets, G_N_ELEMENTS(delay_analog_widgets)},
|
||||||
|
{DELAY_TYPE_DIGITAL, "Digital", set_delay_type, delay_digital_widgets, G_N_ELEMENTS(delay_digital_widgets)},
|
||||||
|
{DELAY_TYPE_MODULATED, "Modulated", set_delay_type, delay_modulated_widgets, G_N_ELEMENTS(delay_modulated_widgets)},
|
||||||
|
{DELAY_TYPE_PONG, "Pong", set_delay_type, delay_pong_widgets, G_N_ELEMENTS(delay_pong_widgets)},
|
||||||
|
{DELAY_TYPE_TAPE, "Tape", set_delay_type, delay_tape_widgets, G_N_ELEMENTS(delay_tape_widgets)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static WidgetContainer reverb_container[] = {
|
||||||
|
{REVERB_TYPE_TWIN, "Twin", set_reverb_type, reverb_twin_widgets, G_N_ELEMENTS(reverb_twin_widgets)},
|
||||||
|
{REVERB_TYPE_LEX_AMBIENCE, "Lexicon ambience", set_reverb_type, reverb_lex_ambience_widgets, G_N_ELEMENTS(reverb_lex_ambience_widgets)},
|
||||||
|
{REVERB_TYPE_LEX_STUDIO, "Lexicon studio", set_reverb_type, reverb_lex_studio_widgets, G_N_ELEMENTS(reverb_lex_studio_widgets)},
|
||||||
|
{REVERB_TYPE_LEX_ROOM, "Lexicon room", set_reverb_type, reverb_lex_room_widgets, G_N_ELEMENTS(reverb_lex_room_widgets)},
|
||||||
|
{REVERB_TYPE_LEX_HALL, "Lexicon hall", set_reverb_type, reverb_lex_hall_widgets, G_N_ELEMENTS(reverb_lex_hall_widgets)},
|
||||||
|
{REVERB_TYPE_EMT240_PLATE, "EMT240 Plate", set_reverb_type, reverb_emt240_plate_widgets, G_N_ELEMENTS(reverb_emt240_plate_widgets)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static WidgetContainer eq_container[] = {
|
||||||
|
{EQ_TYPE_BRIGHT, "Bright", set_eq_type, eq_widgets, G_N_ELEMENTS(eq_widgets)},
|
||||||
|
{EQ_TYPE_MIDBOOST, "Mid Boost", set_eq_type, eq_widgets, G_N_ELEMENTS(eq_widgets)},
|
||||||
|
{EQ_TYPE_SCOOP, "Scoop", set_eq_type, eq_widgets, G_N_ELEMENTS(eq_widgets)},
|
||||||
|
{EQ_TYPE_WARM, "Warm", set_eq_type, eq_widgets, G_N_ELEMENTS(eq_widgets)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget wah_vbox[] = {
|
||||||
|
{"Wah", FALSE, set_wah_on_off, wah_container, G_N_ELEMENTS(wah_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget comp_vbox[] = {
|
||||||
|
{"Compressor", FALSE, set_comp_on_off, comp_container, G_N_ELEMENTS(comp_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget dist_vbox[] = {
|
||||||
|
{"Distortion", FALSE, set_dist_on_off, dist_container, G_N_ELEMENTS(dist_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget noisegate_vbox[] = {
|
||||||
|
{"Noisegate", FALSE, set_noisegate_on_off, noisegate_container, G_N_ELEMENTS(noisegate_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget chorusfx_vbox[] = {
|
||||||
|
{"Chorus/FX", FALSE, set_chorusfx_on_off, chorusfx_container, G_N_ELEMENTS(chorusfx_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget delay_vbox[] = {
|
||||||
|
{"Delay", FALSE, set_delay_on_off, delay_container, G_N_ELEMENTS(delay_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget reverb_vbox[] = {
|
||||||
|
{"Reverb", FALSE, set_reverb_on_off, reverb_container, G_N_ELEMENTS(reverb_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget eq_vbox[] = {
|
||||||
|
{"EQ", FALSE, set_eq_on_off, eq_container, G_N_ELEMENTS(eq_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
VBoxes vboxes[] = {
|
||||||
|
{wah_vbox, G_N_ELEMENTS(wah_vbox)},
|
||||||
|
{eq_vbox, G_N_ELEMENTS(eq_vbox)},
|
||||||
|
{comp_vbox, G_N_ELEMENTS(comp_vbox)},
|
||||||
|
{dist_vbox, G_N_ELEMENTS(dist_vbox)},
|
||||||
|
{noisegate_vbox, G_N_ELEMENTS(noisegate_vbox)},
|
||||||
|
{chorusfx_vbox, G_N_ELEMENTS(chorusfx_vbox)},
|
||||||
|
{delay_vbox, G_N_ELEMENTS(delay_vbox)},
|
||||||
|
{reverb_vbox, G_N_ELEMENTS(reverb_vbox)},
|
||||||
|
};
|
||||||
|
|
||||||
|
int n_vboxes = G_N_ELEMENTS(vboxes);
|
||||||
47
effects.h
Normal file
47
effects.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2009 Tomasz Moń <desowin@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; under version 3 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <glib/gtypes.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *label;
|
||||||
|
void (*callback)(int);
|
||||||
|
void (*callback_with_option)(guint32, int);
|
||||||
|
gdouble min;
|
||||||
|
gdouble max;
|
||||||
|
guint32 option;
|
||||||
|
} SettingsWidget;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
gint id;
|
||||||
|
gchar *label;
|
||||||
|
void (*callback)(int);
|
||||||
|
SettingsWidget *widgets;
|
||||||
|
gint widgets_amt;
|
||||||
|
} WidgetContainer;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *label;
|
||||||
|
gboolean value;
|
||||||
|
void (*callback)(gboolean);
|
||||||
|
WidgetContainer *widgets;
|
||||||
|
gint widgets_amt;
|
||||||
|
} VBoxWidget;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
VBoxWidget *widget;
|
||||||
|
gint amt;
|
||||||
|
} VBoxes;
|
||||||
472
gui.c
472
gui.c
@@ -17,471 +17,10 @@
|
|||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include "gdigi.h"
|
#include "gdigi.h"
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
static SettingsWidget wah_widgets[] = {
|
extern VBoxes vboxes[];
|
||||||
{"Wah min", set_wah_min, NULL, 0.0, 99.0},
|
extern int n_vboxes;
|
||||||
{"Wah max", set_wah_max, NULL, 0.0, 99.0},
|
|
||||||
{"Wah level", set_wah_level, NULL, 0.0, 12.0},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget comp_digi_widgets[] = {
|
|
||||||
{"Compressor sustain", set_comp_sustain, NULL, 0.0, 99.0},
|
|
||||||
{"Compressor tone", set_comp_tone, NULL, 0.0, 99.0},
|
|
||||||
{"Compressor attack", set_comp_attack, NULL, 0.0, 99.0},
|
|
||||||
{"Compressor level", set_comp_level, NULL, 0.0, 99.0},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget comp_cs_widgets[] = {
|
|
||||||
{"Compressor sustain", set_comp_sustain, NULL, 0.0, 99.0},
|
|
||||||
{"Compressor attack", set_comp_attack, NULL, 0.0, 99.0},
|
|
||||||
{"Compressor level", set_comp_level, NULL, 0.0, 99.0},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_screamer_widgets[] = {
|
|
||||||
{"Screamer drive", NULL, set_dist_option, 0.0, 99.0, DIST_SCREAMER_DRIVE},
|
|
||||||
{"Screamer tone", NULL, set_dist_option, 0.0, 99.0, DIST_SCREAMER_TONE},
|
|
||||||
{"Screamer level", NULL, set_dist_option, 0.0, 99.0, DIST_SCREAMER_LVL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_808_widgets[] = {
|
|
||||||
{"808 overdrive", NULL, set_dist_option, 0.0, 99.0, DIST_808_OVERDRIVE},
|
|
||||||
{"808 tone", NULL, set_dist_option, 0.0, 99.0, DIST_808_TONE},
|
|
||||||
{"808 level", NULL, set_dist_option, 0.0, 99.0, DIST_808_LVL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_guyod_widgets[] = {
|
|
||||||
{"GuyOD drive", NULL, set_dist_option, 0.0, 99.0, DIST_GUYOD_DRIVE},
|
|
||||||
{"GuyOD level", NULL, set_dist_option, 0.0, 99.0, DIST_GUYOD_LVL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_dod250_widgets[] = {
|
|
||||||
{"DOD250 gain", NULL, set_dist_option, 0.0, 99.0, DIST_DOD250_GAIN},
|
|
||||||
{"DOD250 level", NULL, set_dist_option, 0.0, 99.0, DIST_DOD250_LVL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_rodent_widgets[] = {
|
|
||||||
{"Rodent dist", NULL, set_dist_option, 0.0, 99.0, DIST_RODENT_DIST},
|
|
||||||
{"Rodent filter", NULL, set_dist_option, 0.0, 99.0, DIST_RODENT_FILTER},
|
|
||||||
{"Rodent level", NULL, set_dist_option, 0.0, 99.0, DIST_RODENT_LVL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_mx_widgets[] = {
|
|
||||||
{"MX dist", NULL, set_dist_option, 0.0, 99.0, DIST_MX_DIST},
|
|
||||||
{"MX output", NULL, set_dist_option, 0.0, 99.0, DIST_MX_OUTPUT},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_ds_widgets[] = {
|
|
||||||
{"DS gain", NULL, set_dist_option, 0.0, 99.0, DIST_DS_GAIN},
|
|
||||||
{"DS tone", NULL, set_dist_option, 0.0, 99.0, DIST_DS_TONE},
|
|
||||||
{"DS level", NULL, set_dist_option, 0.0, 99.0, DIST_DS_LVL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_grunge_widgets[] = {
|
|
||||||
{"Grunge", NULL, set_dist_option, 0.0, 99.0, DIST_GRUNGE_GRUNGE},
|
|
||||||
{"Grunge face", NULL, set_dist_option, 0.0, 99.0, DIST_GRUNGE_FACE},
|
|
||||||
{"Grunge loud", NULL, set_dist_option, 0.0, 99.0, DIST_GRUNGE_LOUD},
|
|
||||||
{"Grunge butt", NULL, set_dist_option, 0.0, 99.0, DIST_GRUNGE_BUTT},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_zone_widgets[] = {
|
|
||||||
{"Zone gain", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_GAIN},
|
|
||||||
{"Zone low", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_LOW},
|
|
||||||
{"Zone mid level", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_MID_LVL},
|
|
||||||
{"Zone mid freq", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_MID_FREQ},
|
|
||||||
{"Zone high", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_HIGH},
|
|
||||||
{"Zone level", NULL, set_dist_option, 0.0, 99.0, DIST_ZONE_LEVEL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_death_widgets[] = {
|
|
||||||
{"Death low", NULL, set_dist_option, 0.0, 99.0, DIST_DEATH_LOW},
|
|
||||||
{"Death mid", NULL, set_dist_option, 0.0, 99.0, DIST_DEATH_MID},
|
|
||||||
{"Death high", NULL, set_dist_option, 0.0, 99.0, DIST_DEATH_HIGH},
|
|
||||||
{"Death level", NULL, set_dist_option, 0.0, 99.0, DIST_DEATH_LVL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_gonk_widgets[] = {
|
|
||||||
{"Gonk gonk", NULL, set_dist_option, 0.0, 99.0, DIST_GONK_GONK},
|
|
||||||
{"Gonk smear", NULL, set_dist_option, 0.0, 99.0, DIST_GONK_SMEAR},
|
|
||||||
{"Gonk suck", NULL, set_dist_option, 0.0, 99.0, DIST_GONK_SUCK},
|
|
||||||
{"Gonk heave", NULL, set_dist_option, 0.0, 99.0, DIST_GONK_HEAVE},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_fuzzy_widgets[] = {
|
|
||||||
{"Fuzzy fuzz", NULL, set_dist_option, 0.0, 99.0, DIST_FUZZY_FUZZ},
|
|
||||||
{"Fuzzy volume", NULL, set_dist_option, 0.0, 99.0, DIST_FUZZY_VOLUME},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget dist_mp_widgets[] = {
|
|
||||||
{"MP sustain", NULL, set_dist_option, 0.0, 99.0, DIST_MP_SUSTAIN},
|
|
||||||
{"MP tone", NULL, set_dist_option, 0.0, 99.0, DIST_MP_TONE},
|
|
||||||
{"MP volume", NULL, set_dist_option, 0.0, 99.0, DIST_MP_VOLUME},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget eq_widgets[] = {
|
|
||||||
{"EQ gain", set_eq_gain, NULL, 0.0, 99.0},
|
|
||||||
{"EQ level", set_eq_level, NULL, 0.0, 99.0},
|
|
||||||
// TODO: make those display propertly (display range -12 to 12)
|
|
||||||
{"EQ bass", set_eq_bass, NULL, 0.0, 24.0},
|
|
||||||
{"EQ mid", set_eq_mid, NULL, 0.0, 24.0},
|
|
||||||
{"EQ treble", set_eq_treble, NULL, 0.0, 24.0},
|
|
||||||
// TODO: make this display propertly (display range 300 to 5000)
|
|
||||||
{"EQ mid Hz", set_eq_mid_hz, NULL, 0.0, 4700.0},
|
|
||||||
// TODO: make this display propertly (display range 500 to 8000)
|
|
||||||
{"EQ treb Hz", set_eq_treb_hz, NULL, 0.0, 7500.0},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget noisegate_gate_widgets[] = {
|
|
||||||
{"Gate treshold", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_GATE_TRESHOLD},
|
|
||||||
{"Gate attack", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_ATTACK},
|
|
||||||
{"Gate release", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_RELEASE},
|
|
||||||
{"Gate attn", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_ATTN},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget noisegate_swell_widgets[] = {
|
|
||||||
{"Swell sens", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_SWELL_SENS},
|
|
||||||
{"Swell attack", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_ATTACK},
|
|
||||||
{"Swell release", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_RELEASE},
|
|
||||||
{"Swell attn", NULL, set_gate_option, 0.0, 99.0, NOISEGATE_ATTN},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_ce_widgets[] = {
|
|
||||||
{"CE chorus speed", NULL, set_chorusfx_option, 0.0, 99.0, CE_CHORUS_SPEED},
|
|
||||||
{"CE chorus depth", NULL, set_chorusfx_option, 0.0, 99.0, CE_CHORUS_DEPTH},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_dual_widgets[] = {
|
|
||||||
{"Dual chorus speed", NULL, set_chorusfx_option, 0.0, 99.0, DUAL_CHORUS_SPEED},
|
|
||||||
{"Dual chorus depth", NULL, set_chorusfx_option, 0.0, 99.0, DUAL_CHORUS_DEPTH},
|
|
||||||
{"Dual chorus level", NULL, set_chorusfx_option, 0.0, 99.0, DUAL_CHORUS_LEVEL},
|
|
||||||
// TODO: DUAL_CHORUS_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_multi_widgets[] = {
|
|
||||||
{"Multi chorus speed", NULL, set_chorusfx_option, 0.0, 99.0, MULTI_CHORUS_SPEED},
|
|
||||||
{"Multi chorus depth", NULL, set_chorusfx_option, 0.0, 99.0, MULTI_CHORUS_DEPTH},
|
|
||||||
{"Multi chorus level", NULL, set_chorusfx_option, 0.0, 99.0, MULTI_CHORUS_LEVEL},
|
|
||||||
// TODO: MULTI_CHORUS_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_flanger_widgets[] = {
|
|
||||||
{"Flanger speed", NULL, set_chorusfx_option, 0.0, 99.0, FLANGER_SPEED},
|
|
||||||
{"Flanger depth", NULL, set_chorusfx_option, 0.0, 99.0, FLANGER_DEPTH},
|
|
||||||
{"Flanger regen", NULL, set_chorusfx_option, 0.0, 99.0, FLANGER_REGEN},
|
|
||||||
{"Flanger level", NULL, set_chorusfx_option, 0.0, 99.0, FLANGER_LEVEL},
|
|
||||||
// TODO: FLANGER_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_mxr_flanger_widgets[] = {
|
|
||||||
{"MXR flanger speed", NULL, set_chorusfx_option, 0.0, 99.0, MXR_FLANGER_SPEED},
|
|
||||||
{"MXR flanger width", NULL, set_chorusfx_option, 0.0, 99.0, MXR_FLANGER_WIDTH},
|
|
||||||
{"MXR flanger regen", NULL, set_chorusfx_option, 0.0, 99.0, MXR_FLANGER_REGEN},
|
|
||||||
{"MXR flanger manual", NULL, set_chorusfx_option, 0.0, 99.0, MXR_FLANGER_MANUAL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_phaser_widgets[] = {
|
|
||||||
{"Phaser speed", NULL, set_chorusfx_option, 0.0, 99.0, PHASER_SPEED},
|
|
||||||
{"Phaser depth", NULL, set_chorusfx_option, 0.0, 99.0, PHASER_DEPTH},
|
|
||||||
{"Phaser regen", NULL, set_chorusfx_option, 0.0, 99.0, PHASER_REGEN},
|
|
||||||
{"Phaser level", NULL, set_chorusfx_option, 0.0, 99.0, PHASER_LEVEL},
|
|
||||||
// TODO: PHASER_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_vibrato_widgets[] = {
|
|
||||||
{"Vibrato speed", NULL, set_chorusfx_option, 0.0, 99.0, VIBRATO_SPEED},
|
|
||||||
{"Vibrato depth", NULL, set_chorusfx_option, 0.0, 99.0, VIBRATO_DEPTH},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_rotary_widgets[] = {
|
|
||||||
{"Rotary speed", NULL, set_chorusfx_option, 0.0, 99.0, ROTARY_SPEED},
|
|
||||||
{"Rotary intensity", NULL, set_chorusfx_option, 0.0, 99.0, ROTARY_INTENSITY},
|
|
||||||
{"Rotary doppler", NULL, set_chorusfx_option, 0.0, 99.0, ROTARY_DOPPLER},
|
|
||||||
{"Rotary crossover", NULL, set_chorusfx_option, 0.0, 99.0, ROTARY_CROSSOVER},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_vibropan_widgets[] = {
|
|
||||||
{"Vibropan speed", NULL, set_chorusfx_option, 0.0, 99.0, VIBROPAN_SPEED},
|
|
||||||
{"Vibropan depth", NULL, set_chorusfx_option, 0.0, 99.0, VIBROPAN_DEPTH},
|
|
||||||
{"Vibropan vibra", NULL, set_chorusfx_option, 0.0, 99.0, VIBROPAN_VIBRA},
|
|
||||||
// TODO: VIBROPAN_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_tremolo_widgets[] = {
|
|
||||||
{"Tremolo speed", NULL, set_chorusfx_option, 0.0, 99.0, TREMOLO_SPEED},
|
|
||||||
{"Tremolo depth", NULL, set_chorusfx_option, 0.0, 99.0, TREMOLO_DEPTH},
|
|
||||||
// TODO: TREMOLO_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_panner_widgets[] = {
|
|
||||||
{"Panner speed", NULL, set_chorusfx_option, 0.0, 99.0, PANNER_SPEED},
|
|
||||||
{"Panner depth", NULL, set_chorusfx_option, 0.0, 99.0, PANNER_DEPTH},
|
|
||||||
// TODO: PANNER_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_envelope_widgets[] = {
|
|
||||||
{"Envelope sensitivity", NULL, set_chorusfx_option, 0.0, 99.0, ENVELOPE_SENSITIVITY},
|
|
||||||
{"Envelope range", NULL, set_chorusfx_option, 0.0, 99.0, ENVELOPE_RANGE},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_autoya_widgets[] = {
|
|
||||||
{"AutoYa speed", NULL, set_chorusfx_option, 0.0, 99.0, AUTOYA_SPEED},
|
|
||||||
{"AutoYa intensity", NULL, set_chorusfx_option, 0.0, 99.0, AUTOYA_INTENSITY},
|
|
||||||
{"AutoYa range", NULL, set_chorusfx_option, 0.0, 49.0, AUTOYA_RANGE},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_yaya_widgets[] = {
|
|
||||||
{"YaYa pedal", NULL, set_chorusfx_option, 0.0, 99.0, YAYA_PEDAL},
|
|
||||||
{"YaYa intensity", NULL, set_chorusfx_option, 0.0, 99.0, YAYA_INTENSITY},
|
|
||||||
{"YaYa range", NULL, set_chorusfx_option, 0.0, 49.0, YAYA_RANGE},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_step_filter_widgets[] = {
|
|
||||||
{"Step filter speed", NULL, set_chorusfx_option, 0.0, 99.0, STEP_FILTER_SPEED},
|
|
||||||
{"Step filter intensity", NULL, set_chorusfx_option, 0.0, 99.0, STEP_FILTER_INTENSITY},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_whammy_widgets[] = {
|
|
||||||
{"Whammy pedal", NULL, set_chorusfx_option, 0.0, 99.0, WHAMMY_PEDAL},
|
|
||||||
{"Whammy mix", NULL, set_chorusfx_option, 0.0, 99.0, WHAMMY_MIX},
|
|
||||||
//TODO: WHAMMY_AMOUNT with valid options:
|
|
||||||
// WHAMMY_OCT_UP, WHAMMY_2OCT_UP, WHAMMY_2ND_DN, WHAMMY_RV_2ND,
|
|
||||||
// WHAMMY_4TH_DN, WHAMMY_OCT_DN, WHAMMY_2OCT_DN, WHAMMY_DIV_BMB,
|
|
||||||
// WHAMMY_M3_MA, WHAMMY_2ND_MA3, WHAMMY_3RD_4TH, WHAMMY_4TH_5TH,
|
|
||||||
// WHAMMY_5TH_OCT, WHAMMY_HOCT_UP, WHAMMY_HOCT_DN, WHAMMY_OCT_UD
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_pitch_shift_widgets[] = {
|
|
||||||
// TODO: make this display propertly (display range -24 to 24)
|
|
||||||
{"Pitch amount", NULL, set_chorusfx_option, 0.0, 48.0, PITCH_AMOUNT},
|
|
||||||
{"Pitch mix", NULL, set_chorusfx_option, 0.0, 99.0, PITCH_MIX},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_detune_widgets[] = {
|
|
||||||
{"Detune amount", NULL, set_chorusfx_option, 0.0, 48.0, DETUNE_AMOUNT},
|
|
||||||
{"Detune level", NULL, set_chorusfx_option, 0.0, 99.0, DETUNE_LEVEL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget chorusfx_ips_widgets[] = {
|
|
||||||
// TODO: IPS_SHIFT_AMOUNT with valid options:
|
|
||||||
// IPS_7TH_DN, IPS_6TH_DN, IPS_5TH_DN, IPS_4TH_DN, IPS_3RD_DN,
|
|
||||||
// IPS_2ND_DN, IPS_2ND_UP, IPS_3RD_UP, IPS_4TH_UP, IPS_5TH_UP,
|
|
||||||
// IPS_6TH_UP, IPS_7TH_UP, IPS_OCT_U
|
|
||||||
|
|
||||||
// TODO: IPS_KEY with valid options:
|
|
||||||
// IPS_E, IPS_F, IPS_GB, IPS_G, IPS_AB, IPS_A, IPS_BB, IPS_B,
|
|
||||||
// IPS_C, IPS_DD, IPS_D, IPS_EB
|
|
||||||
|
|
||||||
// TODO: IPS_SCALE with valid options:
|
|
||||||
// IPS_MAJOR, IPS_MINOR, IPS_DORIA, IPS_MIXLYD, IPS_LYDIAN, IPS_HMINO
|
|
||||||
|
|
||||||
{"IPS level", NULL, set_chorusfx_option, 0.0, 99.0, IPS_LEVEL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget delay_analog_widgets[] = {
|
|
||||||
// TODO: make this display propertly (10 msec to 5 sec)
|
|
||||||
{"Delay time", set_delay_time, NULL, 0.0, 139.0},
|
|
||||||
{"Delay analog level", NULL, set_delay_option, 0.0, 99.0, ANALOG_LEVEL},
|
|
||||||
// TODO: make last value display propertly
|
|
||||||
{"Delay analog repeats", NULL, set_delay_option, 0.0, 100.0, ANALOG_REPEATS},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget delay_digital_widgets[] = {
|
|
||||||
// TODO: make this display propertly (10 msec to 5 sec)
|
|
||||||
{"Delay time", set_delay_time, NULL, 0.0, 139.0},
|
|
||||||
{"Delay digital level", NULL, set_delay_option, 0.0, 99.0, DIGITAL_LEVEL},
|
|
||||||
// TODO: make last value display propertly
|
|
||||||
{"Delay digital repeats", NULL, set_delay_option, 0.0, 100.0, DIGITAL_REPEATS},
|
|
||||||
{"Delay digital ducker thresh", NULL, set_delay_option, 0.0, 99.0, DIGITAL_DUCKER_THRESH},
|
|
||||||
{"Delay digital ducker level", NULL, set_delay_option, 0.0, 99.0, DIGITAL_DUCKER_LEVEL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget delay_modulated_widgets[] = {
|
|
||||||
// TODO: make this display propertly (10 msec to 5 sec)
|
|
||||||
{"Delay time", set_delay_time, NULL, 0.0, 139.0},
|
|
||||||
{"Delay modulated level", NULL, set_delay_option, 0.0, 99.0, MODULATED_LEVEL},
|
|
||||||
// TODO: make last value display propertly
|
|
||||||
{"Delay modulated repeats", NULL, set_delay_option, 0.0, 100.0, MODULATED_REPEATS},
|
|
||||||
{"Delay modulated depth", NULL, set_delay_option, 0.0, 99.0, MODULATED_DEPTH},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget delay_pong_widgets[] = {
|
|
||||||
// TODO: make this display propertly (10 msec to 5 sec)
|
|
||||||
{"Delay time", set_delay_time, NULL, 0.0, 139.0},
|
|
||||||
{"Delay pong level", NULL, set_delay_option, 0.0, 99.0, PONG_LEVEL},
|
|
||||||
// TODO: make last value display propertly
|
|
||||||
{"Delay pong repeats", NULL, set_delay_option, 0.0, 100.0, PONG_REPEATS},
|
|
||||||
{"Delay pong ducker thresh", NULL, set_delay_option, 0.0, 99.0, PONG_DUCKER_THRESH},
|
|
||||||
{"Delay pong ducker level", NULL, set_delay_option, 0.0, 99.0, PONG_DUCKER_LEVEL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget delay_tape_widgets[] = {
|
|
||||||
// TODO: make this display propertly (10 msec to 5 sec)
|
|
||||||
{"Delay time", set_delay_time, NULL, 0.0, 139.0},
|
|
||||||
{"Delay tape level", NULL, set_delay_option, 0.0, 99.0, TAPE_LEVEL},
|
|
||||||
// TODO: make last value display propertly
|
|
||||||
{"Delay tape repeats", NULL, set_delay_option, 0.0, 100.0, TAPE_REPEATS},
|
|
||||||
{"Delay tape wow", NULL, set_delay_option, 0.0, 99.0, TAPE_WOW},
|
|
||||||
{"Delay tape flutter", NULL, set_delay_option, 0.0, 99.0, TAPE_FLUTTER},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget reverb_twin_widgets[] = {
|
|
||||||
{"Twin reverb", NULL, set_reverb_option, 0.0, 99.0, TWIN_REVERB},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget reverb_lex_ambience_widgets[] = {
|
|
||||||
{"Predelay", NULL, set_reverb_option, 0.0, 15.0, LEX_AMBIENCE_PREDELAY},
|
|
||||||
{"Decay", NULL, set_reverb_option, 0.0, 99.0, LEX_AMBIENCE_DECAY},
|
|
||||||
{"Liveliness", NULL, set_reverb_option, 0.0, 99.0, LEX_AMBIENCE_LIVELINESS},
|
|
||||||
{"Level", NULL, set_reverb_option, 0.0, 99.0, LEX_AMBIENCE_LEVEL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget reverb_lex_studio_widgets[] = {
|
|
||||||
{"Predelay", NULL, set_reverb_option, 0.0, 15.0, LEX_STUDIO_PREDELAY},
|
|
||||||
{"Decay", NULL, set_reverb_option, 0.0, 99.0, LEX_STUDIO_DECAY},
|
|
||||||
{"Liveliness", NULL, set_reverb_option, 0.0, 99.0, LEX_STUDIO_LIVELINESS},
|
|
||||||
{"Level", NULL, set_reverb_option, 0.0, 99.0, LEX_STUDIO_LEVEL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget reverb_lex_room_widgets[] = {
|
|
||||||
{"Predelay", NULL, set_reverb_option, 0.0, 15.0, LEX_ROOM_PREDELAY},
|
|
||||||
{"Decay", NULL, set_reverb_option, 0.0, 99.0, LEX_ROOM_DECAY},
|
|
||||||
{"Liveliness", NULL, set_reverb_option, 0.0, 99.0, LEX_ROOM_LIVELINESS},
|
|
||||||
{"Level", NULL, set_reverb_option, 0.0, 99.0, LEX_ROOM_LEVEL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget reverb_lex_hall_widgets[] = {
|
|
||||||
{"Predelay", NULL, set_reverb_option, 0.0, 15.0, LEX_HALL_PREDELAY},
|
|
||||||
{"Decay", NULL, set_reverb_option, 0.0, 99.0, LEX_HALL_DECAY},
|
|
||||||
{"Liveliness", NULL, set_reverb_option, 0.0, 99.0, LEX_HALL_LIVELINESS},
|
|
||||||
{"Level", NULL, set_reverb_option, 0.0, 99.0, LEX_HALL_LEVEL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SettingsWidget reverb_emt240_plate_widgets[] = {
|
|
||||||
{"Predelay", NULL, set_reverb_option, 0.0, 15.0, EMT240_PLATE_PREDELAY},
|
|
||||||
{"Decay", NULL, set_reverb_option, 0.0, 99.0, EMT240_PLATE_DECAY},
|
|
||||||
{"Liveliness", NULL, set_reverb_option, 0.0, 99.0, EMT240_PLATE_LIVELINESS},
|
|
||||||
{"Level", NULL, set_reverb_option, 0.0, 99.0, EMT240_PLATE_LEVEL},
|
|
||||||
};
|
|
||||||
|
|
||||||
static WidgetContainer wah_container[] = {
|
|
||||||
{WAH_TYPE_CRY, "Cry wah", set_wah_type, wah_widgets, G_N_ELEMENTS(wah_widgets)},
|
|
||||||
{WAH_TYPE_FULLRANGE, "Fullrange wah", set_wah_type, wah_widgets, G_N_ELEMENTS(wah_widgets)},
|
|
||||||
{WAH_TYPE_CLYDE, "Clyde wah", set_wah_type, wah_widgets, G_N_ELEMENTS(wah_widgets)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static WidgetContainer comp_container[] = {
|
|
||||||
{COMP_TYPE_DIGI, "Digital compressor", set_comp_type, comp_digi_widgets, G_N_ELEMENTS(comp_digi_widgets)},
|
|
||||||
{COMP_TYPE_CS, "CS compressor", set_comp_type, comp_cs_widgets, G_N_ELEMENTS(comp_cs_widgets)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static WidgetContainer dist_container[] = {
|
|
||||||
{DIST_TYPE_SCREAMER, "Screamer", set_dist_type, dist_screamer_widgets, G_N_ELEMENTS(dist_screamer_widgets)},
|
|
||||||
{DIST_TYPE_808, "808", set_dist_type, dist_808_widgets, G_N_ELEMENTS(dist_808_widgets)},
|
|
||||||
{DIST_TYPE_GUYOD, "GuyOD", set_dist_type, dist_guyod_widgets, G_N_ELEMENTS(dist_guyod_widgets)},
|
|
||||||
{DIST_TYPE_DOD250, "DOD250", set_dist_type, dist_dod250_widgets, G_N_ELEMENTS(dist_dod250_widgets)},
|
|
||||||
{DIST_TYPE_RODENT, "Rodent", set_dist_type, dist_rodent_widgets, G_N_ELEMENTS(dist_rodent_widgets)},
|
|
||||||
{DIST_TYPE_MX, "MX", set_dist_type, dist_mx_widgets, G_N_ELEMENTS(dist_mx_widgets)},
|
|
||||||
{DIST_TYPE_DS, "DS", set_dist_type, dist_ds_widgets, G_N_ELEMENTS(dist_ds_widgets)},
|
|
||||||
{DIST_TYPE_GRUNGE, "Grunge", set_dist_type, dist_grunge_widgets, G_N_ELEMENTS(dist_grunge_widgets)},
|
|
||||||
{DIST_TYPE_ZONE, "Zone", set_dist_type, dist_zone_widgets, G_N_ELEMENTS(dist_zone_widgets)},
|
|
||||||
{DIST_TYPE_DEATH, "Death", set_dist_type, dist_death_widgets, G_N_ELEMENTS(dist_death_widgets)},
|
|
||||||
{DIST_TYPE_GONK, "Gonk", set_dist_type, dist_gonk_widgets, G_N_ELEMENTS(dist_gonk_widgets)},
|
|
||||||
{DIST_TYPE_FUZZY, "Fuzzy", set_dist_type, dist_fuzzy_widgets, G_N_ELEMENTS(dist_fuzzy_widgets)},
|
|
||||||
{DIST_TYPE_MP, "MP", set_dist_type, dist_mp_widgets, G_N_ELEMENTS(dist_mp_widgets)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static WidgetContainer noisegate_container[] = {
|
|
||||||
{NOISEGATE_GATE, "Gate", set_noisegate_type, noisegate_gate_widgets, G_N_ELEMENTS(noisegate_gate_widgets)},
|
|
||||||
{NOISEGATE_SWELL, "Swell", set_noisegate_type, noisegate_swell_widgets, G_N_ELEMENTS(noisegate_swell_widgets)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static WidgetContainer chorusfx_container[] = {
|
|
||||||
{CHORUS_TYPE_CE, "CE Chorus", set_chorusfx_type, chorusfx_ce_widgets, G_N_ELEMENTS(chorusfx_ce_widgets)},
|
|
||||||
{CHORUS_TYPE_DUAL, "Dual Chorus", set_chorusfx_type, chorusfx_dual_widgets, G_N_ELEMENTS(chorusfx_dual_widgets)},
|
|
||||||
{CHORUS_TYPE_MULTI, "Multi Chorus", set_chorusfx_type, chorusfx_multi_widgets, G_N_ELEMENTS(chorusfx_multi_widgets)},
|
|
||||||
{CHORUS_TYPE_FLANGER, "Flanger", set_chorusfx_type, chorusfx_flanger_widgets, G_N_ELEMENTS(chorusfx_flanger_widgets)},
|
|
||||||
{CHORUS_TYPE_MXR_FLANGER, "MXR FLANGER", set_chorusfx_type, chorusfx_mxr_flanger_widgets, G_N_ELEMENTS(chorusfx_mxr_flanger_widgets)},
|
|
||||||
{CHORUS_TYPE_PHASER, "Phaser", set_chorusfx_type, chorusfx_phaser_widgets, G_N_ELEMENTS(chorusfx_phaser_widgets)},
|
|
||||||
{CHORUS_TYPE_VIBRATO, "Vibrato", set_chorusfx_type, chorusfx_vibrato_widgets, G_N_ELEMENTS(chorusfx_vibrato_widgets)},
|
|
||||||
{CHORUS_TYPE_ROTARY, "Rotary", set_chorusfx_type, chorusfx_rotary_widgets, G_N_ELEMENTS(chorusfx_rotary_widgets)},
|
|
||||||
{CHORUS_TYPE_VIBROPAN, "Vibropan", set_chorusfx_type, chorusfx_vibropan_widgets, G_N_ELEMENTS(chorusfx_vibropan_widgets)},
|
|
||||||
{CHORUS_TYPE_TREMOLO, "Tremolo", set_chorusfx_type, chorusfx_tremolo_widgets, G_N_ELEMENTS(chorusfx_tremolo_widgets)},
|
|
||||||
{CHORUS_TYPE_PANNER, "Panner", set_chorusfx_type, chorusfx_panner_widgets, G_N_ELEMENTS(chorusfx_panner_widgets)},
|
|
||||||
{CHORUS_TYPE_ENVELOPE, "Envelope", set_chorusfx_type, chorusfx_envelope_widgets, G_N_ELEMENTS(chorusfx_envelope_widgets)},
|
|
||||||
{CHORUS_TYPE_AUTOYA, "AutoYa", set_chorusfx_type, chorusfx_autoya_widgets, G_N_ELEMENTS(chorusfx_autoya_widgets)},
|
|
||||||
{CHORUS_TYPE_YAYA, "YaYa", set_chorusfx_type, chorusfx_yaya_widgets, G_N_ELEMENTS(chorusfx_yaya_widgets)},
|
|
||||||
{CHORUS_TYPE_STEP_FILTER, "Step Filter", set_chorusfx_type, chorusfx_step_filter_widgets, G_N_ELEMENTS(chorusfx_step_filter_widgets)},
|
|
||||||
{CHORUS_TYPE_WHAMMY, "Whammy", set_chorusfx_type, chorusfx_whammy_widgets, G_N_ELEMENTS(chorusfx_whammy_widgets)},
|
|
||||||
{CHORUS_TYPE_PITCH_SHIFT, "Pitch Shift", set_chorusfx_type, chorusfx_pitch_shift_widgets, G_N_ELEMENTS(chorusfx_pitch_shift_widgets)},
|
|
||||||
{CHORUS_TYPE_DETUNE, "Detune", set_chorusfx_type, chorusfx_detune_widgets, G_N_ELEMENTS(chorusfx_detune_widgets)},
|
|
||||||
{CHORUS_TYPE_IPS, "IPS", set_chorusfx_type, chorusfx_ips_widgets, G_N_ELEMENTS(chorusfx_ips_widgets)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static WidgetContainer delay_container[] = {
|
|
||||||
{DELAY_TYPE_ANALOG, "Analog", set_delay_type, delay_analog_widgets, G_N_ELEMENTS(delay_analog_widgets)},
|
|
||||||
{DELAY_TYPE_DIGITAL, "Digital", set_delay_type, delay_digital_widgets, G_N_ELEMENTS(delay_digital_widgets)},
|
|
||||||
{DELAY_TYPE_MODULATED, "Modulated", set_delay_type, delay_modulated_widgets, G_N_ELEMENTS(delay_modulated_widgets)},
|
|
||||||
{DELAY_TYPE_PONG, "Pong", set_delay_type, delay_pong_widgets, G_N_ELEMENTS(delay_pong_widgets)},
|
|
||||||
{DELAY_TYPE_TAPE, "Tape", set_delay_type, delay_tape_widgets, G_N_ELEMENTS(delay_tape_widgets)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static WidgetContainer reverb_container[] = {
|
|
||||||
{REVERB_TYPE_TWIN, "Twin", set_reverb_type, reverb_twin_widgets, G_N_ELEMENTS(reverb_twin_widgets)},
|
|
||||||
{REVERB_TYPE_LEX_AMBIENCE, "Lexicon ambience", set_reverb_type, reverb_lex_ambience_widgets, G_N_ELEMENTS(reverb_lex_ambience_widgets)},
|
|
||||||
{REVERB_TYPE_LEX_STUDIO, "Lexicon studio", set_reverb_type, reverb_lex_studio_widgets, G_N_ELEMENTS(reverb_lex_studio_widgets)},
|
|
||||||
{REVERB_TYPE_LEX_ROOM, "Lexicon room", set_reverb_type, reverb_lex_room_widgets, G_N_ELEMENTS(reverb_lex_room_widgets)},
|
|
||||||
{REVERB_TYPE_LEX_HALL, "Lexicon hall", set_reverb_type, reverb_lex_hall_widgets, G_N_ELEMENTS(reverb_lex_hall_widgets)},
|
|
||||||
{REVERB_TYPE_EMT240_PLATE, "EMT240 Plate", set_reverb_type, reverb_emt240_plate_widgets, G_N_ELEMENTS(reverb_emt240_plate_widgets)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static WidgetContainer eq_container[] = {
|
|
||||||
{EQ_TYPE_BRIGHT, "Bright", set_eq_type, eq_widgets, G_N_ELEMENTS(eq_widgets)},
|
|
||||||
{EQ_TYPE_MIDBOOST, "Mid Boost", set_eq_type, eq_widgets, G_N_ELEMENTS(eq_widgets)},
|
|
||||||
{EQ_TYPE_SCOOP, "Scoop", set_eq_type, eq_widgets, G_N_ELEMENTS(eq_widgets)},
|
|
||||||
{EQ_TYPE_WARM, "Warm", set_eq_type, eq_widgets, G_N_ELEMENTS(eq_widgets)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget wah_vbox[] = {
|
|
||||||
{"Wah", FALSE, set_wah_on_off, wah_container, G_N_ELEMENTS(wah_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget comp_vbox[] = {
|
|
||||||
{"Compressor", FALSE, set_comp_on_off, comp_container, G_N_ELEMENTS(comp_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget dist_vbox[] = {
|
|
||||||
{"Distortion", FALSE, set_dist_on_off, dist_container, G_N_ELEMENTS(dist_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget noisegate_vbox[] = {
|
|
||||||
{"Noisegate", FALSE, set_noisegate_on_off, noisegate_container, G_N_ELEMENTS(noisegate_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget chorusfx_vbox[] = {
|
|
||||||
{"Chorus/FX", FALSE, set_chorusfx_on_off, chorusfx_container, G_N_ELEMENTS(chorusfx_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget delay_vbox[] = {
|
|
||||||
{"Delay", FALSE, set_delay_on_off, delay_container, G_N_ELEMENTS(delay_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget reverb_vbox[] = {
|
|
||||||
{"Reverb", FALSE, set_reverb_on_off, reverb_container, G_N_ELEMENTS(reverb_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget eq_vbox[] = {
|
|
||||||
{"EQ", FALSE, set_eq_on_off, eq_container, G_N_ELEMENTS(eq_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxes vboxes[] = {
|
|
||||||
{wah_vbox, G_N_ELEMENTS(wah_vbox)},
|
|
||||||
{eq_vbox, G_N_ELEMENTS(eq_vbox)},
|
|
||||||
{comp_vbox, G_N_ELEMENTS(comp_vbox)},
|
|
||||||
{dist_vbox, G_N_ELEMENTS(dist_vbox)},
|
|
||||||
{noisegate_vbox, G_N_ELEMENTS(noisegate_vbox)},
|
|
||||||
{chorusfx_vbox, G_N_ELEMENTS(chorusfx_vbox)},
|
|
||||||
{delay_vbox, G_N_ELEMENTS(delay_vbox)},
|
|
||||||
{reverb_vbox, G_N_ELEMENTS(reverb_vbox)},
|
|
||||||
};
|
|
||||||
|
|
||||||
void value_changed_cb(GtkSpinButton *spinbutton, void (*callback)(int))
|
void value_changed_cb(GtkSpinButton *spinbutton, void (*callback)(int))
|
||||||
{
|
{
|
||||||
@@ -656,15 +195,14 @@ void create_window()
|
|||||||
GtkWidget *vbox;
|
GtkWidget *vbox;
|
||||||
GtkWidget *hbox;
|
GtkWidget *hbox;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
gint x, amt;
|
gint x;
|
||||||
|
|
||||||
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
|
||||||
vbox = gtk_vbox_new(FALSE, 0);
|
vbox = gtk_vbox_new(FALSE, 0);
|
||||||
gtk_container_add(GTK_CONTAINER(window), vbox);
|
gtk_container_add(GTK_CONTAINER(window), vbox);
|
||||||
|
|
||||||
amt = G_N_ELEMENTS(vboxes);
|
for (x = 0; x<n_vboxes; x++) {
|
||||||
for (x = 0; x<amt; x++) {
|
|
||||||
if ((x % 2) == 0) {
|
if ((x % 2) == 0) {
|
||||||
hbox = gtk_hbox_new(TRUE, 0);
|
hbox = gtk_hbox_new(TRUE, 0);
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 2);
|
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 2);
|
||||||
|
|||||||
30
gui.h
30
gui.h
@@ -14,34 +14,4 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses>.
|
* along with this program. If not, see <http://www.gnu.org/licenses>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char *label;
|
|
||||||
void (*callback)(int);
|
|
||||||
void (*callback_with_option)(guint32, int);
|
|
||||||
gdouble min;
|
|
||||||
gdouble max;
|
|
||||||
guint32 option;
|
|
||||||
} SettingsWidget;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
gint id;
|
|
||||||
gchar *label;
|
|
||||||
void (*callback)(int);
|
|
||||||
SettingsWidget *widgets;
|
|
||||||
gint widgets_amt;
|
|
||||||
} WidgetContainer;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char *label;
|
|
||||||
gboolean value;
|
|
||||||
void (*callback)(gboolean);
|
|
||||||
WidgetContainer *widgets;
|
|
||||||
gint widgets_amt;
|
|
||||||
} VBoxWidget;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
VBoxWidget *widget;
|
|
||||||
gint amt;
|
|
||||||
} VBoxes;
|
|
||||||
|
|
||||||
void create_window();
|
void create_window();
|
||||||
|
|||||||
Reference in New Issue
Block a user