47 Commits
0.1.1 ... 0.1.4

Author SHA1 Message Date
Tomasz Moń
c61c2372ae cleaning 2009-03-03 23:06:03 +01:00
Tomasz Moń
49b7f42012 compile with -ansi 2009-03-03 22:39:55 +01:00
Tomasz Moń
157fba0380 make set_option wrapper to send_message 2009-03-03 22:31:25 +01:00
Tomasz Moń
904a30bb38 propertly apply xml patch 2009-03-03 21:57:47 +01:00
Tomasz Moń
8e445bb408 update gui on preset switch 2009-03-03 13:42:15 +01:00
Tomasz Moń
eb48d0b9d2 add get_message_id stub 2009-03-03 11:46:28 +01:00
Tomasz Moń
baa3829263 start gui with proper values 2009-03-03 11:39:25 +01:00
Tomasz Moń
79554a99ce Added tag 0.1.3 for changeset 5cc97dba5d41 2009-03-01 20:24:06 +01:00
Tomasz Moń
4740bef10f update TODO 2009-03-01 20:23:01 +01:00
Tomasz Moń
968d2947a7 set gui widgets to proper values after loading xml file 2009-03-01 19:00:35 +01:00
Tomasz Moń
e2cb03ab32 add store preset window 2009-03-01 13:31:15 +01:00
Tomasz Moń
ce5fe3fe0c add menubar 2009-03-01 11:57:27 +01:00
Tomasz Moń
966fc748af add store_preset_name 2009-03-01 10:05:24 +01:00
Tomasz Moń
709406f3ef add preset.c and preset.h 2009-03-01 09:52:31 +01:00
Tomasz Moń
ce522227c7 add amp types 2009-02-28 00:17:54 +01:00
Tomasz Moń
7d13b2a7ea add preset treeview 2009-02-27 23:28:34 +01:00
Tomasz Moń
d4c86b3a60 use GOptionContext instead of getopt 2009-02-27 12:57:52 +01:00
Tomasz Moń
ca23f2c94c rename query_user_presets to query_preset_names, make it return GStrv 2009-02-26 22:57:08 +01:00
Tomasz Moń
bfc285ad0f add some defines 2009-02-26 20:32:35 +01:00
Tomasz Moń
4e5f2438d3 add query user presets 2009-02-26 18:21:01 +01:00
Tomasz Moń
10aac46dde Added tag 0.1.2 for changeset 7a31bc520752 2009-02-25 22:25:57 +01:00
Tomasz Moń
e802d05ad3 remove redundant function 2009-02-25 22:24:10 +01:00
Tomasz Moń
95f4ad698a renames, some comments, no functional changes 2009-02-25 22:19:01 +01:00
Tomasz Moń
9f3bdd002d revise VBoxWidget 2009-02-25 21:46:41 +01:00
Tomasz Moń
0cfcd806b1 revise WidgetContainer 2009-02-25 21:31:06 +01:00
Tomasz Moń
c0ac97d4e2 revise calculate_checksum 2009-02-25 20:19:21 +01:00
Tomasz Moń
84e9ab0e01 revise SettingsWidget 2009-02-25 19:59:52 +01:00
Tomasz Moń
2c6afe730d add audio setup options 2009-02-25 19:10:52 +01:00
Tomasz Moń
79912510b4 add tests for exp pedal 2009-02-25 18:57:59 +01:00
Tomasz Moń
8bdeea7728 add HACKING file 2009-02-24 23:03:28 +01:00
Tomasz Moń
22de8a00ab add expression pedal types 2009-02-24 22:26:18 +01:00
Tomasz Moń
5cf9c021d8 revise set_eq_mid_hz, set_eq_treb_hz and set_delay_time 2009-02-23 18:02:19 +01:00
Tomasz Moń
2d4798abf7 more work-in-progress on setting effects type 2009-02-23 17:43:14 +01:00
Tomasz Moń
e427e6f4d3 wip on setting type 2009-02-23 16:16:50 +01:00
Tomasz Moń
886f01c1e4 revise set_wah_type, set_comp_type, set_pickup_type and set_eq_type 2009-02-22 22:37:29 +01:00
Tomasz Moń
1c4ff62baa revise set_dist_type, set_noisegate_type, set_chorusfx_type, set_delay_type and set_reverb_type 2009-02-22 21:26:47 +01:00
Tomasz Moń
edbea6ff43 more wrapping 2009-02-22 19:36:17 +01:00
Tomasz Moń
c4b1fbff77 make set_wah_min, set_wah_max, set_wah_level, set_wah_on_off, set_pickup_on_off and set_preset_level wrappers to set_option 2009-02-22 19:11:42 +01:00
Tomasz Moń
68d05bd1db make set_comp_sustain, set_comp_tone, set_comp_attack, set_comp_level and set_comp_on_off wrappers to set_option 2009-02-22 18:16:27 +01:00
Tomasz Moń
73f9a21a02 make set_dist_option, set_dist_on_off, set_gate_option, set_noisegate_on_off, set_chorusfx_option, set_reverb_on_off wrappers to set_option 2009-02-22 17:54:44 +01:00
Tomasz Moń
66c5a966a6 make set_chorusfx_on_off, set_delay_option and set_delay_on_off wrappers to set_option 2009-02-22 16:40:24 +01:00
Tomasz Moń
e7ce11164b introduce set_option 2009-02-22 16:06:30 +01:00
Tomasz Moń
f95804026c code splitting 2009-02-21 17:48:49 +01:00
Tomasz Moń
5c5d0b3709 introduce EffectSettingsGroup 2009-02-21 15:50:36 +01:00
Tomasz Moń
146745829f code reordering, no functional changes 2009-02-21 14:12:08 +01:00
Tomasz Moń
a207b8ec62 merge all functions to set chorusfx parameters into one 2009-02-20 22:08:02 +01:00
Tomasz Moń
a38ab64870 Added tag 0.1.1 for changeset 2a58e6a93179 2009-02-06 21:23:38 +01:00
14 changed files with 2532 additions and 1939 deletions

68
HACKING Normal file
View File

@@ -0,0 +1,68 @@
In general everything brings down to figure out:
-ID
-Position
-Possible value range
There seems to be two possible ways to figure that out.
1) Use USB sniffer together with X-Edit
Once you set up X-Edit and usb sniffer, set some option.
USB sniffer should report something like this being sent to device:
(all numbers here are hex)
04 F0 00 00 04 10 00 5E 04 02 41 00 04 30 09 00 07 00 34 F7
To get SysEx command out of it, remove every 4th byte, so we have:
F0 00 00 10 00 5E 02 41 00 30 09 00 00 34 F7
SysEx message format seems to be formed like this:
magic bytes - F0 00 00 10 00 5E 02 41
status byte - in this example 00
ID - in this example 30 09
Position - in this example 00
Value - in this example 00 (can be more bytes long, see below)
Checksum - to calculate it, XOR all bytes, and then XOR it with 07
Every message ends with F7
Status byte bits explained:
7th - ???
6th - if active add 80 to ID
5th - ???
4th - is active when value will start with length
In such case value can be something like:
01 12 or 02 12 34 or 03 12 34 56
and proper values are:
01 - 12
02 - 1234
03 - 123456
3rd - when 4th bit is also active, and first value byte is 01
then add 80 to value
2nd - when 4th bit is also active, and first value byte is 02
then add 80 to value
1st - when 4th bit is also active, and first value byte is 03
then add 80 to value
So for above example:
ID = 3009 (hex) = 12297 (decimal)
Position = 0
One of possible values is 0. Usually value range is 0 to 99,
albeit in some cases it's different - you have to check what values can
X-Edit assign (there doesn't seem to be any sanity check in firmware)
This is especially needed for IDs that set some effect type.
2) Save preset patch
Patches seem to be simple XML files.
Every parameter is written like this:
<Param>
<ID>65</ID>
<Position>2</Position>
<Value>0</Value>
<Name>Pickup Enable</Name>
<Text>Off</Text>
</Param>
ID is ID, Position is Position and Value is one of possible values.
To get all possible values you can:
do
change value to next one possible in X-Edit
(for example next effect type)
save new patch
check patch file and note the change
while you don't have all possible values

View File

@@ -1,7 +1,7 @@
CC = gcc
CFLAGS = `pkg-config --cflags glib-2.0 gtk+-2.0` -Wall -g
CFLAGS = `pkg-config --cflags glib-2.0 gio-2.0 gtk+-2.0` -Wall -g -ansi
OFLAG = -o
LIBS = `pkg-config --libs glib-2.0 gtk+-2.0 alsa`
LIBS = `pkg-config --libs glib-2.0 gio-2.0 gtk+-2.0 alsa` -lexpat
.SUFFIXES : .o .c
.c.o :
@@ -9,8 +9,8 @@ LIBS = `pkg-config --libs glib-2.0 gtk+-2.0 alsa`
all: gdigi
gdigi: gdigi.o tests.o gui.o
$(CC) $(LIBS) $(OFLAG) gdigi gdigi.o tests.o gui.o
gdigi: gdigi.o tests.o gui.o effects.o preset.o
$(CC) $(LIBS) $(OFLAG) gdigi gdigi.o tests.o gui.o effects.o preset.o
gdigi.o: gdigi.c
@@ -18,6 +18,10 @@ tests.o: tests.c
gui.o: gui.c
effects.o: effects.c
preset.o: preset.c
clean:
rm *.o

2
README
View File

@@ -1,4 +1,4 @@
Requirments: alsa, gtk+, glib
Requirments: alsa, gtk+, glib, expat
Getting started guide:
-to compile: make

9
TODO
View File

@@ -1,11 +1,8 @@
-figure out all magic commands
-make complete gui
-amp/cabinet models
-expression pedal options
-audio setup options
-cabinet models
-tone library
-effects library
-effects level
-handling presets (loading, saving, exporting/importing to/from xml patches)
-handling presets (saving, exporting to xml patches)
-buildsystem
-figure out how to get current device settings, start gui with proper values
-expression pedal settings

526
effects.c Normal file
View File

@@ -0,0 +1,526 @@
/*
* 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 EffectSettings wah_settings[] = {
{"Wah min", 0.0, 99.0, WAH_MIN, WAH_POSITION_MIN_MAX},
{"Wah max", 0.0, 99.0, WAH_MAX, WAH_POSITION_MIN_MAX},
{"Wah level", 0.0, 12.0, WAH_LEVEL, WAH_POSITION},
};
static EffectSettings comp_digi_settings[] = {
{"Compressor sustain", 0.0, 99.0, COMP_SUSTAIN, COMP_POSITION},
{"Compressor tone", 0.0, 99.0, COMP_TONE, COMP_POSITION},
{"Compressor attack", 0.0, 99.0, COMP_ATTACK, COMP_POSITION},
{"Compressor level", 0.0, 99.0, COMP_LEVEL, COMP_POSITION},
};
static EffectSettings comp_cs_settings[] = {
{"Compressor sustain", 0.0, 99.0, COMP_SUSTAIN, COMP_POSITION},
{"Compressor attack", 0.0, 99.0, COMP_ATTACK, COMP_POSITION},
{"Compressor level", 0.0, 99.0, COMP_LEVEL, COMP_POSITION},
};
static EffectSettings dist_screamer_settings[] = {
{"Screamer drive", 0.0, 99.0, DIST_SCREAMER_DRIVE, DIST_POSITION},
{"Screamer tone", 0.0, 99.0, DIST_SCREAMER_TONE, DIST_POSITION},
{"Screamer level", 0.0, 99.0, DIST_SCREAMER_LVL, DIST_POSITION},
};
static EffectSettings dist_808_settings[] = {
{"808 overdrive", 0.0, 99.0, DIST_808_OVERDRIVE, DIST_POSITION},
{"808 tone", 0.0, 99.0, DIST_808_TONE, DIST_POSITION},
{"808 level", 0.0, 99.0, DIST_808_LVL, DIST_POSITION},
};
static EffectSettings dist_guyod_settings[] = {
{"GuyOD drive", 0.0, 99.0, DIST_GUYOD_DRIVE, DIST_POSITION},
{"GuyOD level", 0.0, 99.0, DIST_GUYOD_LVL, DIST_POSITION},
};
static EffectSettings dist_dod250_settings[] = {
{"DOD250 gain", 0.0, 99.0, DIST_DOD250_GAIN, DIST_POSITION},
{"DOD250 level", 0.0, 99.0, DIST_DOD250_LVL, DIST_POSITION},
};
static EffectSettings dist_rodent_settings[] = {
{"Rodent dist", 0.0, 99.0, DIST_RODENT_DIST, DIST_POSITION},
{"Rodent filter", 0.0, 99.0, DIST_RODENT_FILTER, DIST_POSITION},
{"Rodent level", 0.0, 99.0, DIST_RODENT_LVL, DIST_POSITION},
};
static EffectSettings dist_mx_settings[] = {
{"MX dist", 0.0, 99.0, DIST_MX_DIST, DIST_POSITION},
{"MX output", 0.0, 99.0, DIST_MX_OUTPUT, DIST_POSITION},
};
static EffectSettings dist_ds_settings[] = {
{"DS gain", 0.0, 99.0, DIST_DS_GAIN, DIST_POSITION},
{"DS tone", 0.0, 99.0, DIST_DS_TONE, DIST_POSITION},
{"DS level", 0.0, 99.0, DIST_DS_LVL, DIST_POSITION},
};
static EffectSettings dist_grunge_settings[] = {
{"Grunge", 0.0, 99.0, DIST_GRUNGE_GRUNGE, DIST_POSITION},
{"Grunge face", 0.0, 99.0, DIST_GRUNGE_FACE, DIST_POSITION},
{"Grunge loud", 0.0, 99.0, DIST_GRUNGE_LOUD, DIST_POSITION},
{"Grunge butt", 0.0, 99.0, DIST_GRUNGE_BUTT, DIST_POSITION},
};
static EffectSettings dist_zone_settings[] = {
{"Zone gain", 0.0, 99.0, DIST_ZONE_GAIN, DIST_POSITION},
{"Zone low", 0.0, 99.0, DIST_ZONE_LOW, DIST_POSITION},
{"Zone mid level", 0.0, 99.0, DIST_ZONE_MID_LVL, DIST_POSITION},
{"Zone mid freq", 0.0, 99.0, DIST_ZONE_MID_FREQ, DIST_POSITION},
{"Zone high", 0.0, 99.0, DIST_ZONE_HIGH, DIST_POSITION},
{"Zone level", 0.0, 99.0, DIST_ZONE_LEVEL, DIST_POSITION},
};
static EffectSettings dist_death_settings[] = {
{"Death low", 0.0, 99.0, DIST_DEATH_LOW, DIST_POSITION},
{"Death mid", 0.0, 99.0, DIST_DEATH_MID, DIST_POSITION},
{"Death high", 0.0, 99.0, DIST_DEATH_HIGH, DIST_POSITION},
{"Death level", 0.0, 99.0, DIST_DEATH_LVL, DIST_POSITION},
};
static EffectSettings dist_gonk_settings[] = {
{"Gonk gonk", 0.0, 99.0, DIST_GONK_GONK, DIST_POSITION},
{"Gonk smear", 0.0, 99.0, DIST_GONK_SMEAR, DIST_POSITION},
{"Gonk suck", 0.0, 99.0, DIST_GONK_SUCK, DIST_POSITION},
{"Gonk heave", 0.0, 99.0, DIST_GONK_HEAVE, DIST_POSITION},
};
static EffectSettings dist_fuzzy_settings[] = {
{"Fuzzy fuzz", 0.0, 99.0, DIST_FUZZY_FUZZ, DIST_POSITION},
{"Fuzzy volume", 0.0, 99.0, DIST_FUZZY_VOLUME, DIST_POSITION},
};
static EffectSettings dist_mp_settings[] = {
{"MP sustain", 0.0, 99.0, DIST_MP_SUSTAIN, DIST_POSITION},
{"MP tone", 0.0, 99.0, DIST_MP_TONE, DIST_POSITION},
{"MP volume", 0.0, 99.0, DIST_MP_VOLUME, DIST_POSITION},
};
static EffectSettings amp_settings[] = {
{"AMP gain", 0.0, 99.0, AMP_GAIN, AMP_POSITION},
{"AMP level", 0.0, 99.0, AMP_LEVEL, AMP_POSITION},
};
static EffectSettings amp_settings2[] = {
{"AMP level", 0.0, 99.0, AMP_LEVEL, AMP_POSITION},
};
static EffectSettings eq_settings[] = {
/* TODO: make those display propertly (display range -12 to 12) */
{"EQ bass", 0.0, 24.0, EQ_BASS, EQ_POSITION},
{"EQ mid", 0.0, 24.0, EQ_MID, EQ_POSITION},
{"EQ treble", 0.0, 24.0, EQ_TREBLE, EQ_POSITION},
/* TODO: make this display propertly (display range 300 to 5000) */
{"EQ mid Hz", 0.0, 4700.0, EQ_MID_HZ, EQ_POSITION},
/* TODO: make this display propertly (display range 500 to 8000) */
{"EQ treb Hz", 0.0, 7500.0, EQ_TREBLE_HZ, EQ_POSITION},
};
static EffectSettings noisegate_gate_settings[] = {
{"Gate treshold", 0.0, 99.0, NOISEGATE_GATE_TRESHOLD, NOISEGATE_POSITION},
{"Gate attack", 0.0, 99.0, NOISEGATE_ATTACK, NOISEGATE_POSITION},
{"Gate release", 0.0, 99.0, NOISEGATE_RELEASE, NOISEGATE_POSITION},
{"Gate attn", 0.0, 99.0, NOISEGATE_ATTN, NOISEGATE_POSITION},
};
static EffectSettings noisegate_swell_settings[] = {
{"Swell sens", 0.0, 99.0, NOISEGATE_SWELL_SENS, NOISEGATE_POSITION},
{"Swell attack", 0.0, 99.0, NOISEGATE_ATTACK, NOISEGATE_POSITION},
{"Swell release", 0.0, 99.0, NOISEGATE_RELEASE, NOISEGATE_POSITION},
{"Swell attn", 0.0, 99.0, NOISEGATE_ATTN, NOISEGATE_POSITION},
};
static EffectSettings chorusfx_ce_settings[] = {
{"CE chorus speed", 0.0, 99.0, CE_CHORUS_SPEED, CHORUSFX_POSITION},
{"CE chorus depth", 0.0, 99.0, CE_CHORUS_DEPTH, CHORUSFX_POSITION},
};
static EffectSettings chorusfx_dual_settings[] = {
{"Dual chorus speed", 0.0, 99.0, DUAL_CHORUS_SPEED, CHORUSFX_POSITION},
{"Dual chorus depth", 0.0, 99.0, DUAL_CHORUS_DEPTH, CHORUSFX_POSITION},
{"Dual chorus level", 0.0, 99.0, DUAL_CHORUS_LEVEL, CHORUSFX_POSITION},
/* TODO: DUAL_CHORUS_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE */
};
static EffectSettings chorusfx_multi_settings[] = {
{"Multi chorus speed", 0.0, 99.0, MULTI_CHORUS_SPEED, CHORUSFX_POSITION},
{"Multi chorus depth", 0.0, 99.0, MULTI_CHORUS_DEPTH, CHORUSFX_POSITION},
{"Multi chorus level", 0.0, 99.0, MULTI_CHORUS_LEVEL, CHORUSFX_POSITION},
/* TODO: MULTI_CHORUS_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE */
};
static EffectSettings chorusfx_flanger_settings[] = {
{"Flanger speed", 0.0, 99.0, FLANGER_SPEED, CHORUSFX_POSITION},
{"Flanger depth", 0.0, 99.0, FLANGER_DEPTH, CHORUSFX_POSITION},
{"Flanger regen", 0.0, 99.0, FLANGER_REGEN, CHORUSFX_POSITION},
{"Flanger level", 0.0, 99.0, FLANGER_LEVEL, CHORUSFX_POSITION},
/* TODO: FLANGER_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE */
};
static EffectSettings chorusfx_mxr_flanger_settings[] = {
{"MXR flanger speed", 0.0, 99.0, MXR_FLANGER_SPEED, CHORUSFX_POSITION},
{"MXR flanger width", 0.0, 99.0, MXR_FLANGER_WIDTH, CHORUSFX_POSITION},
{"MXR flanger regen", 0.0, 99.0, MXR_FLANGER_REGEN, CHORUSFX_POSITION},
{"MXR flanger manual", 0.0, 99.0, MXR_FLANGER_MANUAL, CHORUSFX_POSITION},
};
static EffectSettings chorusfx_phaser_settings[] = {
{"Phaser speed", 0.0, 99.0, PHASER_SPEED, CHORUSFX_POSITION},
{"Phaser depth", 0.0, 99.0, PHASER_DEPTH, CHORUSFX_POSITION},
{"Phaser regen", 0.0, 99.0, PHASER_REGEN, CHORUSFX_POSITION},
{"Phaser level", 0.0, 99.0, PHASER_LEVEL, CHORUSFX_POSITION},
/* TODO: PHASER_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE */
};
static EffectSettings chorusfx_vibrato_settings[] = {
{"Vibrato speed", 0.0, 99.0, VIBRATO_SPEED, CHORUSFX_POSITION},
{"Vibrato depth", 0.0, 99.0, VIBRATO_DEPTH, CHORUSFX_POSITION},
};
static EffectSettings chorusfx_rotary_settings[] = {
{"Rotary speed", 0.0, 99.0, ROTARY_SPEED, CHORUSFX_POSITION},
{"Rotary intensity", 0.0, 99.0, ROTARY_INTENSITY, CHORUSFX_POSITION},
{"Rotary doppler", 0.0, 99.0, ROTARY_DOPPLER, CHORUSFX_POSITION},
{"Rotary crossover", 0.0, 99.0, ROTARY_CROSSOVER, CHORUSFX_POSITION},
};
static EffectSettings chorusfx_vibropan_settings[] = {
{"Vibropan speed", 0.0, 99.0, VIBROPAN_SPEED, CHORUSFX_POSITION},
{"Vibropan depth", 0.0, 99.0, VIBROPAN_DEPTH, CHORUSFX_POSITION},
{"Vibropan vibra", 0.0, 99.0, VIBROPAN_VIBRA, CHORUSFX_POSITION},
/* TODO: VIBROPAN_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE */
};
static EffectSettings chorusfx_tremolo_settings[] = {
{"Tremolo speed", 0.0, 99.0, TREMOLO_SPEED, CHORUSFX_POSITION},
{"Tremolo depth", 0.0, 99.0, TREMOLO_DEPTH, CHORUSFX_POSITION},
/* TODO: TREMOLO_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE */
};
static EffectSettings chorusfx_panner_settings[] = {
{"Panner speed", 0.0, 99.0, PANNER_SPEED, CHORUSFX_POSITION},
{"Panner depth", 0.0, 99.0, PANNER_DEPTH, CHORUSFX_POSITION},
/* TODO: PANNER_WAVE with valid options WAVE_TRI, WAVE_SINE, WAVE_SQUARE */
};
static EffectSettings chorusfx_envelope_settings[] = {
{"Envelope sensitivity", 0.0, 99.0, ENVELOPE_SENSITIVITY, CHORUSFX_POSITION},
{"Envelope range", 0.0, 99.0, ENVELOPE_RANGE, CHORUSFX_POSITION},
};
static EffectSettings chorusfx_autoya_settings[] = {
{"AutoYa speed", 0.0, 99.0, AUTOYA_SPEED, CHORUSFX_POSITION},
{"AutoYa intensity", 0.0, 99.0, AUTOYA_INTENSITY, CHORUSFX_POSITION},
{"AutoYa range", 0.0, 49.0, AUTOYA_RANGE, CHORUSFX_POSITION},
};
static EffectSettings chorusfx_yaya_settings[] = {
{"YaYa pedal", 0.0, 99.0, YAYA_PEDAL, CHORUSFX_POSITION},
{"YaYa intensity", 0.0, 99.0, YAYA_INTENSITY, CHORUSFX_POSITION},
{"YaYa range", 0.0, 49.0, YAYA_RANGE, CHORUSFX_POSITION},
};
static EffectSettings chorusfx_step_filter_settings[] = {
{"Step filter speed", 0.0, 99.0, STEP_FILTER_SPEED, CHORUSFX_POSITION},
{"Step filter intensity", 0.0, 99.0, STEP_FILTER_INTENSITY, CHORUSFX_POSITION},
};
static EffectSettings chorusfx_whammy_settings[] = {
{"Whammy pedal", 0.0, 99.0, WHAMMY_PEDAL, CHORUSFX_POSITION},
{"Whammy mix", 0.0, 99.0, WHAMMY_MIX, CHORUSFX_POSITION},
/*
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 EffectSettings chorusfx_pitch_shift_settings[] = {
/* TODO: make this display propertly (display range -24 to 24) */
{"Pitch amount", 0.0, 48.0, PITCH_AMOUNT, CHORUSFX_POSITION},
{"Pitch mix", 0.0, 99.0, PITCH_MIX, CHORUSFX_POSITION},
};
static EffectSettings chorusfx_detune_settings[] = {
{"Detune amount", 0.0, 48.0, DETUNE_AMOUNT, CHORUSFX_POSITION},
{"Detune level", 0.0, 99.0, DETUNE_LEVEL, CHORUSFX_POSITION},
};
static EffectSettings chorusfx_ips_settings[] = {
/*
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", 0.0, 99.0, IPS_LEVEL, CHORUSFX_POSITION},
};
static EffectSettings delay_analog_settings[] = {
/* TODO: make this display propertly (10 msec to 5 sec) */
{"Delay time", 0.0, 139.0, DELAY_TIME, DELAY_POSITION},
{"Delay analog level", 0.0, 99.0, ANALOG_LEVEL, DELAY_POSITION},
/* TODO: make last value display propertly */
{"Delay analog repeats", 0.0, 100.0, ANALOG_REPEATS, DELAY_POSITION},
};
static EffectSettings delay_digital_settings[] = {
/* TODO: make this display propertly (10 msec to 5 sec) */
{"Delay time", 0.0, 139.0, DELAY_TIME, DELAY_POSITION},
{"Delay digital level", 0.0, 99.0, DIGITAL_LEVEL, DELAY_POSITION},
/* TODO: make last value display propertly */
{"Delay digital repeats", 0.0, 100.0, DIGITAL_REPEATS, DELAY_POSITION},
{"Delay digital ducker thresh", 0.0, 99.0, DIGITAL_DUCKER_THRESH, DELAY_POSITION},
{"Delay digital ducker level", 0.0, 99.0, DIGITAL_DUCKER_LEVEL, DELAY_POSITION},
};
static EffectSettings delay_modulated_settings[] = {
/* TODO: make this display propertly (10 msec to 5 sec) */
{"Delay time", 0.0, 139.0, DELAY_TIME, DELAY_POSITION},
{"Delay modulated level", 0.0, 99.0, MODULATED_LEVEL, DELAY_POSITION},
/* TODO: make last value display propertly */
{"Delay modulated repeats", 0.0, 100.0, MODULATED_REPEATS, DELAY_POSITION},
{"Delay modulated depth", 0.0, 99.0, MODULATED_DEPTH, DELAY_POSITION},
};
static EffectSettings delay_pong_settings[] = {
/* TODO: make this display propertly (10 msec to 5 sec) */
{"Delay time", 0.0, 139.0, DELAY_TIME, DELAY_POSITION},
{"Delay pong level", 0.0, 99.0, PONG_LEVEL, DELAY_POSITION},
/* TODO: make last value display propertly */
{"Delay pong repeats", 0.0, 100.0, PONG_REPEATS, DELAY_POSITION},
{"Delay pong ducker thresh", 0.0, 99.0, PONG_DUCKER_THRESH, DELAY_POSITION},
{"Delay pong ducker level", 0.0, 99.0, PONG_DUCKER_LEVEL, DELAY_POSITION},
};
static EffectSettings delay_tape_settings[] = {
/* TODO: make this display propertly (10 msec to 5 sec) */
{"Delay time", 0.0, 139.0, DELAY_TIME, DELAY_POSITION},
{"Delay tape level", 0.0, 99.0, TAPE_LEVEL, DELAY_POSITION},
/* TODO: make last value display propertly */
{"Delay tape repeats", 0.0, 100.0, TAPE_REPEATS, DELAY_POSITION},
{"Delay tape wow", 0.0, 99.0, TAPE_WOW, DELAY_POSITION},
{"Delay tape flutter", 0.0, 99.0, TAPE_FLUTTER, DELAY_POSITION},
};
static EffectSettings reverb_twin_settings[] = {
{"Twin reverb", 0.0, 99.0, TWIN_REVERB, REVERB_POSITION},
};
static EffectSettings reverb_lex_ambience_settings[] = {
{"Predelay", 0.0, 15.0, LEX_AMBIENCE_PREDELAY, REVERB_POSITION},
{"Decay", 0.0, 99.0, LEX_AMBIENCE_DECAY, REVERB_POSITION},
{"Liveliness", 0.0, 99.0, LEX_AMBIENCE_LIVELINESS, REVERB_POSITION},
{"Level", 0.0, 99.0, LEX_AMBIENCE_LEVEL, REVERB_POSITION},
};
static EffectSettings reverb_lex_studio_settings[] = {
{"Predelay", 0.0, 15.0, LEX_STUDIO_PREDELAY, REVERB_POSITION},
{"Decay", 0.0, 99.0, LEX_STUDIO_DECAY, REVERB_POSITION},
{"Liveliness", 0.0, 99.0, LEX_STUDIO_LIVELINESS, REVERB_POSITION},
{"Level", 0.0, 99.0, LEX_STUDIO_LEVEL, REVERB_POSITION},
};
static EffectSettings reverb_lex_room_settings[] = {
{"Predelay", 0.0, 15.0, LEX_ROOM_PREDELAY, REVERB_POSITION},
{"Decay", 0.0, 99.0, LEX_ROOM_DECAY, REVERB_POSITION},
{"Liveliness", 0.0, 99.0, LEX_ROOM_LIVELINESS, REVERB_POSITION},
{"Level", 0.0, 99.0, LEX_ROOM_LEVEL, REVERB_POSITION},
};
static EffectSettings reverb_lex_hall_settings[] = {
{"Predelay", 0.0, 15.0, LEX_HALL_PREDELAY, REVERB_POSITION},
{"Decay", 0.0, 99.0, LEX_HALL_DECAY, REVERB_POSITION},
{"Liveliness", 0.0, 99.0, LEX_HALL_LIVELINESS, REVERB_POSITION},
{"Level", 0.0, 99.0, LEX_HALL_LEVEL, REVERB_POSITION},
};
static EffectSettings reverb_emt240_plate_settings[] = {
{"Predelay", 0.0, 15.0, EMT240_PLATE_PREDELAY, REVERB_POSITION},
{"Decay", 0.0, 99.0, EMT240_PLATE_DECAY, REVERB_POSITION},
{"Liveliness", 0.0, 99.0, EMT240_PLATE_LIVELINESS, REVERB_POSITION},
{"Level", 0.0, 99.0, EMT240_PLATE_LEVEL, REVERB_POSITION},
};
static EffectGroup wah_group[] = {
{WAH_TYPE_CRY, "Cry wah", WAH_TYPE, WAH_POSITION, wah_settings, G_N_ELEMENTS(wah_settings)},
{WAH_TYPE_FULLRANGE, "Fullrange wah", WAH_TYPE, WAH_POSITION, wah_settings, G_N_ELEMENTS(wah_settings)},
{WAH_TYPE_CLYDE, "Clyde wah", WAH_TYPE, WAH_POSITION, wah_settings, G_N_ELEMENTS(wah_settings)},
};
static EffectGroup 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 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)},
{DIST_TYPE_GUYOD, "GuyOD", DIST_TYPE, DIST_POSITION, dist_guyod_settings, G_N_ELEMENTS(dist_guyod_settings)},
{DIST_TYPE_DOD250, "DOD250", DIST_TYPE, DIST_POSITION, dist_dod250_settings, G_N_ELEMENTS(dist_dod250_settings)},
{DIST_TYPE_RODENT, "Rodent", DIST_TYPE, DIST_POSITION, dist_rodent_settings, G_N_ELEMENTS(dist_rodent_settings)},
{DIST_TYPE_MX, "MX", DIST_TYPE, DIST_POSITION, dist_mx_settings, G_N_ELEMENTS(dist_mx_settings)},
{DIST_TYPE_DS, "DS", DIST_TYPE, DIST_POSITION, dist_ds_settings, G_N_ELEMENTS(dist_ds_settings)},
{DIST_TYPE_GRUNGE, "Grunge", DIST_TYPE, DIST_POSITION, dist_grunge_settings, G_N_ELEMENTS(dist_grunge_settings)},
{DIST_TYPE_ZONE, "Zone", DIST_TYPE, DIST_POSITION, dist_zone_settings, G_N_ELEMENTS(dist_zone_settings)},
{DIST_TYPE_DEATH, "Death", DIST_TYPE, DIST_POSITION, dist_death_settings, G_N_ELEMENTS(dist_death_settings)},
{DIST_TYPE_GONK, "Gonk", DIST_TYPE, DIST_POSITION, dist_gonk_settings, G_N_ELEMENTS(dist_gonk_settings)},
{DIST_TYPE_FUZZY, "Fuzzy", DIST_TYPE, DIST_POSITION, dist_fuzzy_settings, G_N_ELEMENTS(dist_fuzzy_settings)},
{DIST_TYPE_MP, "MP", DIST_TYPE, DIST_POSITION, dist_mp_settings, G_N_ELEMENTS(dist_mp_settings)},
};
static EffectGroup noisegate_group[] = {
{NOISEGATE_GATE, "Gate", NOISEGATE_TYPE, NOISEGATE_POSITION, noisegate_gate_settings, G_N_ELEMENTS(noisegate_gate_settings)},
{NOISEGATE_SWELL, "Swell", NOISEGATE_TYPE, NOISEGATE_POSITION, noisegate_swell_settings, G_N_ELEMENTS(noisegate_swell_settings)},
};
static EffectGroup chorusfx_group[] = {
{CHORUS_TYPE_CE, "CE Chorus", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_ce_settings, G_N_ELEMENTS(chorusfx_ce_settings)},
{CHORUS_TYPE_DUAL, "Dual Chorus", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_dual_settings, G_N_ELEMENTS(chorusfx_dual_settings)},
{CHORUS_TYPE_MULTI, "Multi Chorus", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_multi_settings, G_N_ELEMENTS(chorusfx_multi_settings)},
{CHORUS_TYPE_FLANGER, "Flanger", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_flanger_settings, G_N_ELEMENTS(chorusfx_flanger_settings)},
{CHORUS_TYPE_MXR_FLANGER, "MXR FLANGER", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_mxr_flanger_settings, G_N_ELEMENTS(chorusfx_mxr_flanger_settings)},
{CHORUS_TYPE_PHASER, "Phaser", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_phaser_settings, G_N_ELEMENTS(chorusfx_phaser_settings)},
{CHORUS_TYPE_VIBRATO, "Vibrato", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_vibrato_settings, G_N_ELEMENTS(chorusfx_vibrato_settings)},
{CHORUS_TYPE_ROTARY, "Rotary", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_rotary_settings, G_N_ELEMENTS(chorusfx_rotary_settings)},
{CHORUS_TYPE_VIBROPAN, "Vibropan", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_vibropan_settings, G_N_ELEMENTS(chorusfx_vibropan_settings)},
{CHORUS_TYPE_TREMOLO, "Tremolo", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_tremolo_settings, G_N_ELEMENTS(chorusfx_tremolo_settings)},
{CHORUS_TYPE_PANNER, "Panner", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_panner_settings, G_N_ELEMENTS(chorusfx_panner_settings)},
{CHORUS_TYPE_ENVELOPE, "Envelope", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_envelope_settings, G_N_ELEMENTS(chorusfx_envelope_settings)},
{CHORUS_TYPE_AUTOYA, "AutoYa", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_autoya_settings, G_N_ELEMENTS(chorusfx_autoya_settings)},
{CHORUS_TYPE_YAYA, "YaYa", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_yaya_settings, G_N_ELEMENTS(chorusfx_yaya_settings)},
{CHORUS_TYPE_STEP_FILTER, "Step Filter", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_step_filter_settings, G_N_ELEMENTS(chorusfx_step_filter_settings)},
{CHORUS_TYPE_WHAMMY, "Whammy", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_whammy_settings, G_N_ELEMENTS(chorusfx_whammy_settings)},
{CHORUS_TYPE_PITCH_SHIFT, "Pitch Shift", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_pitch_shift_settings, G_N_ELEMENTS(chorusfx_pitch_shift_settings)},
{CHORUS_TYPE_DETUNE, "Detune", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_detune_settings, G_N_ELEMENTS(chorusfx_detune_settings)},
{CHORUS_TYPE_IPS, "IPS", CHORUSFX_TYPE, CHORUSFX_POSITION, chorusfx_ips_settings, G_N_ELEMENTS(chorusfx_ips_settings)},
};
static EffectGroup delay_group[] = {
{DELAY_TYPE_ANALOG, "Analog", DELAY_TYPE, DELAY_POSITION, delay_analog_settings, G_N_ELEMENTS(delay_analog_settings)},
{DELAY_TYPE_DIGITAL, "Digital", DELAY_TYPE, DELAY_POSITION, delay_digital_settings, G_N_ELEMENTS(delay_digital_settings)},
{DELAY_TYPE_MODULATED, "Modulated", DELAY_TYPE, DELAY_POSITION, delay_modulated_settings, G_N_ELEMENTS(delay_modulated_settings)},
{DELAY_TYPE_PONG, "Pong", DELAY_TYPE, DELAY_POSITION, delay_pong_settings, G_N_ELEMENTS(delay_pong_settings)},
{DELAY_TYPE_TAPE, "Tape", DELAY_TYPE, DELAY_POSITION, delay_tape_settings, G_N_ELEMENTS(delay_tape_settings)},
};
static EffectGroup reverb_group[] = {
{REVERB_TYPE_TWIN, "Twin", REVERB_TYPE, REVERB_POSITION, reverb_twin_settings, G_N_ELEMENTS(reverb_twin_settings)},
{REVERB_TYPE_LEX_AMBIENCE, "Lexicon ambience", REVERB_TYPE, REVERB_POSITION, reverb_lex_ambience_settings, G_N_ELEMENTS(reverb_lex_ambience_settings)},
{REVERB_TYPE_LEX_STUDIO, "Lexicon studio", REVERB_TYPE, REVERB_POSITION, reverb_lex_studio_settings, G_N_ELEMENTS(reverb_lex_studio_settings)},
{REVERB_TYPE_LEX_ROOM, "Lexicon room", REVERB_TYPE, REVERB_POSITION, reverb_lex_room_settings, G_N_ELEMENTS(reverb_lex_room_settings)},
{REVERB_TYPE_LEX_HALL, "Lexicon hall", REVERB_TYPE, REVERB_POSITION, reverb_lex_hall_settings, G_N_ELEMENTS(reverb_lex_hall_settings)},
{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 eq_group[] = {
{EQ_TYPE_BRIGHT, "Bright", EQ_TYPE, EQ_POSITION, eq_settings, G_N_ELEMENTS(eq_settings)},
{EQ_TYPE_MIDBOOST, "Mid Boost", EQ_TYPE, EQ_POSITION, eq_settings, G_N_ELEMENTS(eq_settings)},
{EQ_TYPE_SCOOP, "Scoop", EQ_TYPE, EQ_POSITION, eq_settings, G_N_ELEMENTS(eq_settings)},
{EQ_TYPE_WARM, "Warm", EQ_TYPE, EQ_POSITION, eq_settings, G_N_ELEMENTS(eq_settings)},
};
static Effect wah_effect[] = {
{"Wah", WAH_ON_OFF, WAH_POSITION, wah_group, G_N_ELEMENTS(wah_group)},
};
static Effect comp_effect[] = {
{"Compressor", COMP_ON_OFF, COMP_POSITION, comp_group, G_N_ELEMENTS(comp_group)},
};
static Effect dist_effect[] = {
{"Distortion", DIST_ON_OFF, DIST_POSITION, dist_group, G_N_ELEMENTS(dist_group)},
};
static Effect noisegate_effect[] = {
{"Noisegate", NOISEGATE_ON_OFF, NOISEGATE_POSITION, noisegate_group, G_N_ELEMENTS(noisegate_group)},
};
static Effect chorusfx_effect[] = {
{"Chorus/FX", CHORUSFX_ON_OFF, CHORUSFX_POSITION, chorusfx_group, G_N_ELEMENTS(chorusfx_group)},
};
static Effect delay_effect[] = {
{"Delay", DELAY_ON_OFF, DELAY_POSITION, delay_group, G_N_ELEMENTS(delay_group)},
};
static Effect reverb_effect[] = {
{"Reverb", REVERB_ON_OFF, REVERB_POSITION, reverb_group, G_N_ELEMENTS(reverb_group)},
};
static Effect amp_effect[] = {
{"Amp", AMP_ON_OFF, AMP_POSITION, amp_group, G_N_ELEMENTS(amp_group)},
};
static Effect eq_effect[] = {
{"EQ", EQ_ON_OFF, EQ_POSITION, eq_group, G_N_ELEMENTS(eq_group)},
};
EffectList effects[] = {
{wah_effect, G_N_ELEMENTS(wah_effect)},
{amp_effect, G_N_ELEMENTS(amp_effect)},
{eq_effect, G_N_ELEMENTS(eq_effect)},
{comp_effect, G_N_ELEMENTS(comp_effect)},
{dist_effect, G_N_ELEMENTS(dist_effect)},
{noisegate_effect, G_N_ELEMENTS(noisegate_effect)},
{chorusfx_effect, G_N_ELEMENTS(chorusfx_effect)},
{delay_effect, G_N_ELEMENTS(delay_effect)},
{reverb_effect, G_N_ELEMENTS(reverb_effect)},
};
int n_effects = G_N_ELEMENTS(effects);

52
effects.h Normal file
View File

@@ -0,0 +1,52 @@
/*
* 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>.
*/
#ifndef GDIGI_EFFECTS_H
#define GDIGI_EFFECTS_H
#include <glib/gtypes.h>
typedef struct {
char *label; /* Parameter name */
gdouble min; /* Parameter minumum value */
gdouble max; /* Parameter maximum value */
guint option; /* ID (to set parameter) */
guint position; /* position */
} EffectSettings;
typedef struct {
guint id; /* value (type) */
gchar *label; /* Effect name */
guint option; /* ID (to set effect type) */
guint position; /* position */
EffectSettings *settings; /* possible parameters */
gint settings_amt; /* possible parameters length */
} EffectGroup;
typedef struct {
char *label; /* Base effect name */
guint option; /* ID (to set effect on/off) */
guint position; /* position */
EffectGroup *group; /* possible effect types */
gint group_amt; /* possible effect types length */
} Effect;
typedef struct {
Effect *effect; /* list of supported effects */
gint amt; /* list of supported effects length */
} EffectList;
#endif /* GDIGI_EFFECTS_H */

1214
gdigi.c

File diff suppressed because it is too large Load Diff

652
gdigi.h
View File

@@ -14,205 +14,289 @@
* along with this program. If not, see <http://www.gnu.org/licenses>.
*/
#include <usb.h>
#ifndef GDIGI_H
#define GDIGI_H
#include <glib.h>
#include <glib-object.h>
enum {
WAH_TYPE_CRY = 0,
WAH_TYPE_FULLRANGE,
WAH_TYPE_CLYDE
WAH_TYPE_CRY = 132,
WAH_TYPE_FULLRANGE = 133,
WAH_TYPE_CLYDE = 134
};
#define WAH_POSITION_MIN_MAX 20
#define WAH_MIN 8195
#define WAH_MAX 8196
#define WAH_TYPE 128
#define WAH_ON_OFF 129
#define WAH_POSITION 3
#define WAH_LEVEL 133
enum {
COMP_TYPE_DIGI = 195,
COMP_TYPE_CS = 196
};
#define COMP_TYPE 207
#define COMP_ON_OFF 193
#define COMP_POSITION 4
#define COMP_SUSTAIN 208
#define COMP_TONE 209
#define COMP_ATTACK 211
#define COMP_LEVEL 210
enum {
PICKUP_TYPE_HB_SC = 66,
PICKUP_TYPE_SC_HB = 65
};
#define PICKUP_TYPE 64
#define PICKUP_ON_OFF 65
#define PICKUP_POSITION 2
enum {
DIST_TYPE_SCREAMER = 1280,
DIST_TYPE_808 = 1292,
DIST_TYPE_GUYOD = 1285,
DIST_TYPE_DOD250 = 1283,
DIST_TYPE_RODENT = 1281,
DIST_TYPE_MX = 1291,
DIST_TYPE_DS = 1282,
DIST_TYPE_GRUNGE = 1287,
DIST_TYPE_ZONE = 1289,
DIST_TYPE_DEATH = 1294,
DIST_TYPE_GONK = 1293,
DIST_TYPE_FUZZY = 1288,
DIST_TYPE_MP = 1284
};
#define DIST_TYPE 2432
#define DIST_ON_OFF 2433
#define DIST_POSITION 6
#define DIST_SCREAMER_DRIVE 2434
#define DIST_SCREAMER_TONE 2435
#define DIST_SCREAMER_LVL 2436
#define DIST_808_OVERDRIVE 2473
#define DIST_808_TONE 2474
#define DIST_808_LVL 2475
#define DIST_GUYOD_DRIVE 2448
#define DIST_GUYOD_LVL 2449
#define DIST_DOD250_GAIN 2443
#define DIST_DOD250_LVL 2444
#define DIST_RODENT_DIST 2437
#define DIST_RODENT_FILTER 2438
#define DIST_RODENT_LVL 2439
#define DIST_MX_DIST 2468
#define DIST_MX_OUTPUT 2469
#define DIST_DS_GAIN 2440
#define DIST_DS_TONE 2441
#define DIST_DS_LVL 2442
#define DIST_GRUNGE_GRUNGE 2454
#define DIST_GRUNGE_FACE 2456
#define DIST_GRUNGE_LOUD 2457
#define DIST_GRUNGE_BUTT 2455
#define DIST_ZONE_GAIN 2460
#define DIST_ZONE_LOW 2463
#define DIST_ZONE_MID_LVL 2462
#define DIST_ZONE_MID_FREQ 2461
#define DIST_ZONE_HIGH 2464
#define DIST_ZONE_LEVEL 2465
#define DIST_DEATH_LOW 2477
#define DIST_DEATH_MID 2476
#define DIST_DEATH_HIGH 2479
#define DIST_DEATH_LVL 2478
#define DIST_GONK_GONK 2480
#define DIST_GONK_SMEAR 2471
#define DIST_GONK_SUCK 2470
#define DIST_GONK_HEAVE 2472
#define DIST_FUZZY_FUZZ 2458
#define DIST_FUZZY_VOLUME 2459
#define DIST_MP_SUSTAIN 2445
#define DIST_MP_TONE 2446
#define DIST_MP_VOLUME 2447
#define PRESET_POSITION 18
#define PRESET_LEVEL 2626
enum {
AMP_TYPE_TWEED_CHAMP = 307,
AMP_TYPE_TWEED_DELUXE = 308,
AMP_TYPE_TWEED_BASSMAN = 309,
AMP_TYPE_BLACKFACE_TWIN = 311,
AMP_TYPE_BLACKFACE_DELUXE = 312,
AMP_TYPE_SUPER_LEAD_PLEXI = 314,
AMP_TYPE_MASTER_VOLUME = 316,
AMP_TYPE_JCM800 = 317,
AMP_TYPE_JCM900 = 318,
AMP_TYPE_AC15 = 322,
AMP_TYPE_AC30TB = 323,
AMP_TYPE_HIWATT_100 = 324,
AMP_TYPE_BOOGIE_MARK_II = 320,
AMP_TYPE_DUAL_RECTIFIER = 321,
AMP_TYPE_MATCHLESS_HC30 = 326,
AMP_TYPE_SOLO = 331,
AMP_TYPE_METAL = 332,
AMP_TYPE_BRIGHT = 333,
AMP_TYPE_CLEAN = 335,
AMP_TYPE_HIGH_GAIN = 337,
AMP_TYPE_ACOUSTIC = 341,
AMP_TYPE_DIRECT = 306
};
enum {
COMP_TYPE_DIGI = 0,
COMP_TYPE_CS
EQ_TYPE_BRIGHT = 1474,
EQ_TYPE_MIDBOOST = 1472,
EQ_TYPE_SCOOP = 1473,
EQ_TYPE_WARM = 1475
};
#define AMP_TYPE 2496
#define AMP_ON_OFF 265
#define AMP_POSITION 8
#define AMP_GAIN 2497
#define AMP_LEVEL 2498
#define EQ_TYPE 3202
#define EQ_ON_OFF 3212
#define EQ_POSITION 24
#define EQ_BASS 3203
#define EQ_MID 3204
#define EQ_MID_HZ 3206
#define EQ_TREBLE 3205
#define EQ_TREBLE_HZ 3211
enum {
PICKUP_TYPE_HB_SC = 0,
PICKUP_TYPE_SC_HB
NOISEGATE_GATE = 768,
NOISEGATE_SWELL = 769
};
enum {
DIST_TYPE_SCREAMER = 0,
DIST_TYPE_808,
DIST_TYPE_GUYOD,
DIST_TYPE_DOD250,
DIST_TYPE_RODENT,
DIST_TYPE_MX,
DIST_TYPE_DS,
DIST_TYPE_GRUNGE,
DIST_TYPE_ZONE,
DIST_TYPE_DEATH,
DIST_TYPE_GONK,
DIST_TYPE_FUZZY,
DIST_TYPE_MP
};
#define DIST_SCREAMER_DRIVE 0x02
#define DIST_SCREAMER_TONE 0x03
#define DIST_SCREAMER_LVL 0x04
#define DIST_808_OVERDRIVE 0x29
#define DIST_808_TONE 0x2A
#define DIST_808_LVL 0x2B
#define DIST_GUYOD_DRIVE 0x10
#define DIST_GUYOD_LVL 0x11
#define DIST_DOD250_GAIN 0x0B
#define DIST_DOD250_LVL 0x0C
#define DIST_RODENT_DIST 0x05
#define DIST_RODENT_FILTER 0x06
#define DIST_RODENT_LVL 0x07
#define DIST_MX_DIST 0x24
#define DIST_MX_OUTPUT 0x25
#define DIST_DS_GAIN 0x08
#define DIST_DS_TONE 0x09
#define DIST_DS_LVL 0x0A
#define DIST_GRUNGE_GRUNGE 0x16
#define DIST_GRUNGE_FACE 0x18
#define DIST_GRUNGE_LOUD 0x19
#define DIST_GRUNGE_BUTT 0x17
#define DIST_ZONE_GAIN 0x1C
#define DIST_ZONE_LOW 0x1F
#define DIST_ZONE_MID_LVL 0x1E
#define DIST_ZONE_MID_FREQ 0x1D
#define DIST_ZONE_HIGH 0x20
#define DIST_ZONE_LEVEL 0x21
#define DIST_DEATH_LOW 0x2D
#define DIST_DEATH_MID 0x2C
#define DIST_DEATH_HIGH 0x2F
#define DIST_DEATH_LVL 0x2E
#define DIST_GONK_GONK 0x30
#define DIST_GONK_SMEAR 0x27
#define DIST_GONK_SUCK 0x26
#define DIST_GONK_HEAVE 0x28
#define DIST_FUZZY_FUZZ 0x1A
#define DIST_FUZZY_VOLUME 0x1B
#define DIST_MP_SUSTAIN 0x0D
#define DIST_MP_TONE 0x0E
#define DIST_MP_VOLUME 0x0F
enum {
EQ_TYPE_BRIGHT = 0,
EQ_TYPE_MIDBOOST,
EQ_TYPE_SCOOP,
EQ_TYPE_WARM
};
enum {
NOISEGATE_GATE = 0,
NOISEGATE_SWELL
};
#define NOISEGATE_TYPE 704
#define NOISEGATE_ON_OFF 705
#define NOISEGATE_POSITION 12
/* available only in Gate mode */
#define NOISEGATE_GATE_TRESHOLD 0x46
#define NOISEGATE_GATE_TRESHOLD 710
/* available only in Swell mode */
#define NOISEGATE_SWELL_SENS 0x47
#define NOISEGATE_SWELL_SENS 711
/* available in both Gate and Swell modes */
#define NOISEGATE_ATTACK 0x48
#define NOISEGATE_RELEASE 0x49
#define NOISEGATE_ATTN 0x4A
#define NOISEGATE_ATTACK 712
#define NOISEGATE_RELEASE 713
#define NOISEGATE_ATTN 714
enum {
CHORUS_TYPE_CE = 0,
CHORUS_TYPE_DUAL,
CHORUS_TYPE_MULTI,
CHORUS_TYPE_FLANGER,
CHORUS_TYPE_MXR_FLANGER,
CHORUS_TYPE_PHASER,
CHORUS_TYPE_VIBRATO,
CHORUS_TYPE_ROTARY,
CHORUS_TYPE_VIBROPAN,
CHORUS_TYPE_TREMOLO,
CHORUS_TYPE_PANNER,
CHORUS_TYPE_ENVELOPE,
CHORUS_TYPE_AUTOYA,
CHORUS_TYPE_YAYA,
CHORUS_TYPE_STEP_FILTER,
CHORUS_TYPE_WHAMMY,
CHORUS_TYPE_PITCH_SHIFT,
CHORUS_TYPE_DETUNE,
CHORUS_TYPE_IPS
CHORUS_TYPE_CE = 0x37B,
CHORUS_TYPE_DUAL = 0x379,
CHORUS_TYPE_MULTI = 0x37a,
CHORUS_TYPE_FLANGER = 0x37d,
CHORUS_TYPE_MXR_FLANGER = 0x37f,
CHORUS_TYPE_PHASER = 0x381,
CHORUS_TYPE_VIBRATO = 0x360,
CHORUS_TYPE_ROTARY = 0x361,
CHORUS_TYPE_VIBROPAN = 0x38f,
CHORUS_TYPE_TREMOLO = 0x35e,
CHORUS_TYPE_PANNER = 0x35f,
CHORUS_TYPE_ENVELOPE = 0x38a,
CHORUS_TYPE_AUTOYA = 0x38b,
CHORUS_TYPE_YAYA = 0x38c,
CHORUS_TYPE_STEP_FILTER = 0x38d,
CHORUS_TYPE_WHAMMY = 0x540,
CHORUS_TYPE_PITCH_SHIFT = 0x543,
CHORUS_TYPE_DETUNE = 0x542,
CHORUS_TYPE_IPS = 0x541
};
#define CE_CHORUS_SPEED 0x45
#define CE_CHORUS_DEPTH 0x46
#define CHORUSFX_TYPE 768
#define CHORUSFX_ON_OFF 769
#define CHORUSFX_POSITION 14
#define DUAL_CHORUS_SPEED 0x45
#define DUAL_CHORUS_DEPTH 0x46
#define DUAL_CHORUS_LEVEL 0x44
#define DUAL_CHORUS_WAVE 0x48
#define CE_CHORUS_SPEED 837
#define CE_CHORUS_DEPTH 838
#define MULTI_CHORUS_SPEED 0x45
#define MULTI_CHORUS_DEPTH 0x46
#define MULTI_CHORUS_WAVE 0x48
#define MULTI_CHORUS_LEVEL 0x44
#define DUAL_CHORUS_SPEED 837
#define DUAL_CHORUS_DEPTH 838
#define DUAL_CHORUS_LEVEL 836
#define DUAL_CHORUS_WAVE 840
#define FLANGER_SPEED 0x06
#define FLANGER_DEPTH 0x07
#define FLANGER_REGEN 0x08
#define FLANGER_LEVEL 0x05
#define FLANGER_WAVE 0x09
#define MULTI_CHORUS_SPEED 837
#define MULTI_CHORUS_DEPTH 838
#define MULTI_CHORUS_WAVE 840
#define MULTI_CHORUS_LEVEL 836
#define MXR_FLANGER_SPEED 0x06
#define MXR_FLANGER_WIDTH 0x12
#define MXR_FLANGER_REGEN 0x08
#define MXR_FLANGER_MANUAL 0x15
#define FLANGER_SPEED 902
#define FLANGER_DEPTH 903
#define FLANGER_REGEN 904
#define FLANGER_LEVEL 901
#define FLANGER_WAVE 905
#define PHASER_SPEED 0x42
#define PHASER_DEPTH 0x43
#define PHASER_REGEN 0x46
#define PHASER_LEVEL 0x45
#define PHASER_WAVE 0x47
#define MXR_FLANGER_SPEED 902
#define MXR_FLANGER_WIDTH 914
#define MXR_FLANGER_REGEN 904
#define MXR_FLANGER_MANUAL 917
#define VIBRATO_SPEED 0x04
#define VIBRATO_DEPTH 0x05
#define PHASER_SPEED 962
#define PHASER_DEPTH 963
#define PHASER_REGEN 966
#define PHASER_LEVEL 965
#define PHASER_WAVE 967
#define ROTARY_SPEED 0x42
#define ROTARY_INTENSITY 0x44
#define ROTARY_DOPPLER 0x46
#define ROTARY_CROSSOVER 0x47
#define VIBRATO_SPEED 1284
#define VIBRATO_DEPTH 1285
#define VIBROPAN_SPEED 0x22
#define VIBROPAN_DEPTH 0x23
#define VIBROPAN_VIBRA 0x24
#define VIBROPAN_WAVE 0x25
#define ROTARY_SPEED 1346
#define ROTARY_INTENSITY 1348
#define ROTARY_DOPPLER 1350
#define ROTARY_CROSSOVER 1351
#define TREMOLO_SPEED 0x04
#define TREMOLO_DEPTH 0x03
#define TREMOLO_WAVE 0x05
#define VIBROPAN_SPEED 1314
#define VIBROPAN_DEPTH 1315
#define VIBROPAN_VIBRA 1316
#define VIBROPAN_WAVE 1317
#define PANNER_SPEED 0x44
#define PANNER_DEPTH 0x43
#define PANNER_WAVE 0x45
#define TREMOLO_SPEED 1156
#define TREMOLO_DEPTH 1155
#define TREMOLO_WAVE 1157
#define ENVELOPE_SENSITIVITY 0x46
#define ENVELOPE_RANGE 0x45
#define PANNER_SPEED 1220
#define PANNER_DEPTH 1219
#define PANNER_WAVE 1221
#define AUTOYA_SPEED 0x46
#define AUTOYA_INTENSITY 0x4A
#define AUTOYA_RANGE 0x4B
#define ENVELOPE_SENSITIVITY 1606
#define ENVELOPE_RANGE 1605
#define YAYA_PEDAL 0x02
#define YAYA_INTENSITY 0x09
#define YAYA_RANGE 0x0A
#define AUTOYA_SPEED 1478
#define AUTOYA_INTENSITY 1482
#define AUTOYA_RANGE 1483
#define STEP_FILTER_SPEED 0x42
#define STEP_FILTER_INTENSITY 0x43
#define YAYA_PEDAL 1410
#define YAYA_INTENSITY 1417
#define YAYA_RANGE 1418
#define WHAMMY_AMOUNT 0x05
#define WHAMMY_PEDAL 0x03
#define WHAMMY_MIX 0x04
#define STEP_FILTER_SPEED 3010
#define STEP_FILTER_INTENSITY 3011
#define PITCH_AMOUNT 0x42
#define PITCH_MIX 0x51
#define WHAMMY_AMOUNT 1797
#define WHAMMY_PEDAL 1795
#define WHAMMY_MIX 1796
#define DETUNE_AMOUNT 0x04
#define DETUNE_LEVEL 0x03
#define PITCH_AMOUNT 1730
#define PITCH_MIX 1745
#define IPS_SHIFT_AMOUNT 0x42
#define IPS_KEY 0x44
#define IPS_SCALE 0x43
#define IPS_LEVEL 0x45
#define DETUNE_AMOUNT 1668
#define DETUNE_LEVEL 1667
#define IPS_SHIFT_AMOUNT 2754
#define IPS_KEY 2756
#define IPS_SCALE 2755
#define IPS_LEVEL 2757
/* DUAL_CHORUS_WAVE, MULTI_CHORUS_WAVE, FLANGER_WAVE, PHASER_WAVE,
VIBROPAN_WAVE, TREMOLO_WAVE, PANNER_WAVE valid values */
@@ -277,118 +361,166 @@ enum {
#define IPS_HMINO 0x05
enum {
DELAY_TYPE_ANALOG = 0,
DELAY_TYPE_DIGITAL,
DELAY_TYPE_MODULATED,
DELAY_TYPE_PONG,
DELAY_TYPE_TAPE
DELAY_TYPE_ANALOG = 1046,
DELAY_TYPE_DIGITAL = 1045,
DELAY_TYPE_MODULATED = 1047,
DELAY_TYPE_PONG = 1048,
DELAY_TYPE_TAPE = 1049
};
#define ANALOG_LEVEL 0x44
#define ANALOG_REPEATS 0x47
#define DELAY_TYPE 1856
#define DELAY_ON_OFF 1857
#define DELAY_POSITION 15
#define DIGITAL_LEVEL 0x44
#define DIGITAL_REPEATS 0x47
#define DIGITAL_DUCKER_THRESH 0x61
#define DIGITAL_DUCKER_LEVEL 0x62
#define DELAY_TIME 1888
#define MODULATED_LEVEL 0x44
#define MODULATED_REPEATS 0x47
#define MODULATED_DEPTH 0x51
#define ANALOG_LEVEL 1860
#define ANALOG_REPEATS 1863
#define PONG_LEVEL 0x44
#define PONG_REPEATS 0x47
#define PONG_DUCKER_THRESH 0x61
#define PONG_DUCKER_LEVEL 0x62
#define DIGITAL_LEVEL 1860
#define DIGITAL_REPEATS 1863
#define DIGITAL_DUCKER_THRESH 1889
#define DIGITAL_DUCKER_LEVEL 1890
#define TAPE_LEVEL 0x44
#define TAPE_REPEATS 0x47
#define TAPE_WOW 0x63
#define TAPE_FLUTTER 0x64
#define MODULATED_LEVEL 1860
#define MODULATED_REPEATS 1863
#define MODULATED_DEPTH 1873
#define PONG_LEVEL 1860
#define PONG_REPEATS 1863
#define PONG_DUCKER_THRESH 1889
#define PONG_DUCKER_LEVEL 1890
#define TAPE_LEVEL 1860
#define TAPE_REPEATS 1863
#define TAPE_WOW 1891
#define TAPE_FLUTTER 1892
enum {
REVERB_TYPE_TWIN = 0,
REVERB_TYPE_LEX_AMBIENCE,
REVERB_TYPE_LEX_STUDIO,
REVERB_TYPE_LEX_ROOM,
REVERB_TYPE_LEX_HALL,
REVERB_TYPE_EMT240_PLATE
REVERB_TYPE_TWIN = 1146,
REVERB_TYPE_LEX_AMBIENCE = 1150,
REVERB_TYPE_LEX_STUDIO = 1149,
REVERB_TYPE_LEX_ROOM = 1148,
REVERB_TYPE_LEX_HALL = 1147,
REVERB_TYPE_EMT240_PLATE = 1151
};
#define TWIN_REVERB 0x05
#define REVERB_TYPE 1920
#define REVERB_ON_OFF 1921
#define REVERB_POSITION 16
#define LEX_AMBIENCE_PREDELAY 0x02
#define LEX_AMBIENCE_DECAY 0x07
#define LEX_AMBIENCE_LIVELINESS 0x0D
#define LEX_AMBIENCE_LEVEL 0x05
#define TWIN_REVERB 1925
#define LEX_STUDIO_PREDELAY 0x02
#define LEX_STUDIO_DECAY 0x07
#define LEX_STUDIO_LIVELINESS 0x0D
#define LEX_STUDIO_LEVEL 0x05
#define LEX_AMBIENCE_PREDELAY 1922
#define LEX_AMBIENCE_DECAY 1927
#define LEX_AMBIENCE_LIVELINESS 1933
#define LEX_AMBIENCE_LEVEL 1925
#define LEX_ROOM_PREDELAY 0x02
#define LEX_ROOM_DECAY 0x07
#define LEX_ROOM_LIVELINESS 0x0D
#define LEX_ROOM_LEVEL 0x05
#define LEX_STUDIO_PREDELAY 1922
#define LEX_STUDIO_DECAY 1927
#define LEX_STUDIO_LIVELINESS 1933
#define LEX_STUDIO_LEVEL 1925
#define LEX_HALL_PREDELAY 0x02
#define LEX_HALL_DECAY 0x07
#define LEX_HALL_LIVELINESS 0x0D
#define LEX_HALL_LEVEL 0x05
#define LEX_ROOM_PREDELAY 1922
#define LEX_ROOM_DECAY 1927
#define LEX_ROOM_LIVELINESS 1933
#define LEX_ROOM_LEVEL 1925
#define EMT240_PLATE_PREDELAY 0x02
#define EMT240_PLATE_DECAY 0x07
#define EMT240_PLATE_LIVELINESS 0x0D
#define EMT240_PLATE_LEVEL 0x05
#define LEX_HALL_PREDELAY 1922
#define LEX_HALL_DECAY 1927
#define LEX_HALL_LIVELINESS 1933
#define LEX_HALL_LEVEL 1925
void set_wah_min(int level);
void set_wah_max(int level);
void set_wah_level(int level);
void set_wah_type(int type);
void set_wah_on_off(gboolean val);
void set_comp_sustain(int level);
void set_comp_tone(int level);
void set_comp_attack(int level);
void set_comp_level(int level);
void set_comp_type(int type);
void set_comp_on_off(gboolean val);
void switch_user_preset(int x);
void switch_system_preset(int x);
void set_pickup_type(int type);
void set_pickup_on_off(gboolean val);
void set_dist_type(int type);
void set_dist_option(char option, int value);
void set_dist_on_off(gboolean val);
#define EMT240_PLATE_PREDELAY 1922
#define EMT240_PLATE_DECAY 1927
#define EMT240_PLATE_LIVELINESS 1933
#define EMT240_PLATE_LEVEL 1925
#define EXP_TYPE 8194
#define EXP_POSITION 19
#define EXP_MIN 8195
#define EXP_MAX 8196
#define USB_POSITION 0
#define USB_AUDIO_PLAYBACK_MIX 12297
#define USB_AUDIO_LEVEL 12307
enum {
PRESETS_SYSTEM = 0,
PRESETS_USER = 1,
PRESETS_ARTIST = 2,
/* Version 1 and later */
PRESETS_MEDIA_CARD = 3,
PRESETS_EDIT_BUFFER = 4, /* Current preset edit buffer, index must be 0 */
PRESETS_FACTORY2 = 5,
/* Version 2 and later */
PRESETS_EXTERNAL = 6
};
enum {
REQUEST_WHO_AM_I = 0x01,
RECEIVE_WHO_AM_I = 0x02,
REQUEST_DEVICE_CONFIGURATION = 0x08,
RECEIVE_DEVICE_CONFIGURATION = 0x09,
REQUEST_GLOBAL_PARAMETERS = 0x10,
RECEIVE_GLOBAL_PARAMETERS = 0x11,
REQUEST_BULK_DUMP = 0x18,
RECEIVE_BULK_DUMP_START = 0x19,
RECEIVE_BULK_DUMP_END = 0x1B,
REQUEST_PRESET_NAMES = 0x21,
RECEIVE_PRESET_NAMES = 0x22,
REQUEST_PRESET_NAME = 0x28,
RECEIVE_PRESET_NAME = 0x29,
REQUEST_PRESET = 0x2A,
RECEIVE_PRESET_START = 0x2B,
RECEIVE_PRESET_END = 0x2C,
RECEIVE_PRESET_PARAMETERS = 0x2D,
LOAD_EDIT_BUFFER_PRESET = 0x38, /* version 0 only
use move preset in later versions */
MOVE_PRESET = 0x39,
REQUEST_MODIFIER_LINKABLE_LIST = 0x3A,
RECEIVE_MOFIFIER_LINKABLE_LIST = 0x3B,
REQUEST_PARAMETER_VALUE = 0x40,
RECEIVE_PARAMETER_VALUE = 0x41,
/* version 1 and later */
REQUEST_OBJECT_NAMES = 0x50,
RECEIVE_OBJECT_NAMES = 0x51,
REQUEST_OBJECT_NAME = 0x52,
RECEIVE_OBJECT_NAME = 0x53,
REQUEST_OBJECT = 0x54,
RECEIVE_OBJECT = 0x55,
MOVE_OBJECT = 0x56,
DELETE_OBJECT = 0x57,
REQUEST_TABLE = 0x5A,
RECEIVE_TABLE = 0x5B,
RECEIVE_DEVICE_NOTIFICATION = 0x70,
ACK = 0x7E,
NACK = 0x7F
};
void send_message(gint procedure, gchar *data, gint len);
void append_value(GString *msg, guint value);
void set_option(guint id, guint position, guint value);
void switch_preset(guint bank, guint x);
void store_preset_name(int x, const gchar *name);
void set_preset_level(int level);
void set_eq_type(int type);
void set_eq_gain(int x);
void set_eq_level(int x);
void set_eq_bass(int x);
void set_eq_mid(int x);
void set_eq_mid_hz(int x);
void set_eq_treble(int x);
void set_eq_treb_hz(int x);
void set_eq_on_off(gboolean val);
void set_noisegate_type(int type);
void set_gate_option(char option, int x);
void set_noisegate_on_off(gboolean val);
void set_chorusfx_option(char option, int x);
void set_flanger_option(char option, int x);
void set_vibrato_option(char option, int x);
void set_tremolo_option(char option, int x);
void set_envelope_option(char option, int x);
void set_ya_option(char option, int x);
void set_filter_option(char option, int x);
void set_whammy_option(char option, int x);
void set_pitch_option(char option, int x);
void set_ips_option(char option, int x);
void set_chorusfx_type(int type);
void set_chorusfx_on_off(gboolean val);
void set_delay_time(int x);
void set_delay_type(int type);
void set_delay_option(char option, int x);
void set_delay_on_off(gboolean val);
void set_reverb_option(char option, int x);
void set_reverb_type(int type);
void set_reverb_on_off(gboolean val);
GStrv query_preset_names(gchar bank);
GString *get_current_preset();
#endif /* GDIGI_H */

1030
gui.c

File diff suppressed because it is too large Load Diff

6
gui.h
View File

@@ -14,4 +14,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses>.
*/
#ifndef GDIGI_GUI_H
#define GDIGI_GUI_H
void show_error_message(GtkWidget *parent, gchar *message);
void create_window();
#endif /* GDIGI_GUI_H */

229
preset.c Normal file
View File

@@ -0,0 +1,229 @@
/*
* 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 <gio/gio.h>
#include <expat.h>
#include <string.h>
#include "preset.h"
enum {
PARSER_TYPE_NOT_SET = -1,
PARSER_TYPE_PRESET_NAME = 0,
PARSER_TYPE_PARAM_ID,
PARSER_TYPE_PARAM_POSITION,
PARSER_TYPE_PARAM_VALUE,
PARSER_TYPE_PARAM_NAME,
PARSER_TYPE_PARAM_TEXT
};
typedef struct {
int depth;
int id;
Preset *preset;
} AppData;
static void XMLCALL start(void *data, const char *el, const char **attr) {
AppData *ad = (AppData *) data;
ad->id = PARSER_TYPE_NOT_SET;
if (g_strcmp0(el, "Name") == 0) {
if (ad->depth == 1) {
ad->id = PARSER_TYPE_PRESET_NAME;
} else if (ad->depth == 3) {
ad->id = PARSER_TYPE_PARAM_NAME;
}
}
if (g_strcmp0(el, "Params") == 0) {
if (ad->preset->params != NULL)
g_message("Params aleady exists!");
} else if (g_strcmp0(el, "Param") == 0) {
SettingParam *param = (SettingParam *)g_malloc(sizeof(SettingParam));
param->id = -1;
param->position = -1;
param->value = -1;
ad->preset->params = g_list_prepend(ad->preset->params, param);
} else if (g_strcmp0(el, "ID") == 0) {
ad->id = PARSER_TYPE_PARAM_ID;
} else if (g_strcmp0(el, "Position") == 0) {
ad->id = PARSER_TYPE_PARAM_POSITION;
} else if (g_strcmp0(el, "Value") == 0) {
ad->id = PARSER_TYPE_PARAM_VALUE;
} else if (g_strcmp0(el, "Text") == 0) {
ad->id = PARSER_TYPE_PARAM_TEXT;
}
ad->depth++;
}
static void XMLCALL end(void *data, const char *el) {
AppData *ad = (AppData *) data;
ad->depth--;
ad->id = PARSER_TYPE_NOT_SET;
}
static void XMLCALL text_cb(void *data, const char* text, int len)
{
AppData *ad = (AppData *) data;
if ((ad == NULL) || (ad->preset == NULL))
return;
if (ad->id == PARSER_TYPE_PRESET_NAME) {
if (ad->preset->name != NULL)
g_free(ad->preset->name);
ad->preset->name = g_strndup(text, len);
}
if (ad->preset->params == NULL)
return;
SettingParam *param = (SettingParam *) ad->preset->params->data;
if (param == NULL)
return;
gchar *value = g_strndup(text, len);
switch (ad->id) {
case PARSER_TYPE_PARAM_ID:
param->id = atoi(value);
break;
case PARSER_TYPE_PARAM_POSITION:
param->position = atoi(value);
break;
case PARSER_TYPE_PARAM_VALUE:
param->value = atoi(value);
break;
}
g_free(value);
}
/*
Parses preset file
On success returns Preset which must be freed using preset_free, or NULL on error
*/
Preset *create_preset_from_xml_file(gchar *filename)
{
GFile *file;
GError *error = NULL;
gchar *contents;
file = g_file_new_for_path(filename);
if (g_file_get_contents(filename, &contents, NULL, &error) == FALSE) {
g_message("Failed to get %s contents: %s", filename, error->message);
g_error_free(error);
g_object_unref(file);
return NULL;
}
AppData *ad = (AppData *) g_malloc(sizeof(AppData));
ad->depth = 0;
ad->preset = g_malloc(sizeof(Preset));
ad->preset->name = NULL;
ad->preset->params = NULL;
ad->id = PARSER_TYPE_NOT_SET;
XML_Parser p;
p = XML_ParserCreate(NULL);
XML_SetUserData(p, (void *) ad);
XML_SetElementHandler(p, start, end);
XML_SetCharacterDataHandler(p, text_cb);
if (XML_Parse(p, contents, strlen(contents), XML_TRUE) != XML_STATUS_OK) {
g_warning("Parse error at line %d:\n%s",
(int)XML_GetCurrentLineNumber(p),
XML_ErrorString(XML_GetErrorCode(p)));
preset_free(ad->preset);
g_free(ad);
g_free(contents);
g_object_unref(file);
return NULL;
}
Preset *preset = ad->preset;
preset->params = g_list_reverse(preset->params);
XML_ParserFree(p);
g_free(ad);
g_free(contents);
g_object_unref(file);
return preset;
}
Preset *create_preset_from_data(GString *data)
{
gint total;
gint n;
gint id;
gint position;
guint value;
gint x;
gint tmp;
x = 0x09;
n = 0;
total = (unsigned char)data->str[x];
x++;
Preset *preset = g_malloc(sizeof(Preset));
preset->name = NULL; /* TODO */
preset->params = NULL;
do {
id = ((unsigned char)data->str[x] << 8) | (unsigned char)data->str[x+1];
position = (unsigned char)data->str[x+2];
x+=3;
value = data->str[x];
x++;
if (value > 0x80) {
tmp = value & 0x7F;
value = 0;
gint i;
for (i=0; i<tmp; i++) {
value |= ((unsigned char)data->str[x+i] << (8*(tmp-i-1)));
}
x+=tmp;
}
n++;
SettingParam *param = (SettingParam *)g_malloc(sizeof(SettingParam));
param->id = id;
param->position = position;
param->value = value;
preset->params = g_list_prepend(preset->params, param);
g_message("%d ID %d Position %d Value %d", n, id, position, value);
} while ((x < data->len) && n<total);
g_message("TOTAL %d", total);
preset->params = g_list_reverse(preset->params);
return preset;
}
void preset_free(Preset *preset)
{
g_return_if_fail(preset != NULL);
if (preset->params != NULL) {
g_list_foreach(preset->params, (GFunc)g_free, NULL);
g_list_free(preset->params);
}
if (preset->name != NULL)
g_free(preset->name);
g_free(preset);
}

37
preset.h Normal file
View File

@@ -0,0 +1,37 @@
/*
* 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>.
*/
#ifndef GDIGI_PRESET_H
#define GDIGI_PRESET_H
#include <glib.h>
typedef struct {
int id;
int position;
int value;
} SettingParam;
typedef struct {
gchar *name;
GList *params;
} Preset;
Preset *create_preset_from_xml_file(gchar *filename);
Preset *create_preset_from_data(GString *data);
void preset_free(Preset *preset);
#endif /* GDIGI_PRESET_H */

632
tests.c
View File

@@ -20,185 +20,185 @@ void test_wah()
{
int x;
set_wah_type(WAH_TYPE_CRY);
set_option(WAH_TYPE, WAH_POSITION, WAH_TYPE_CRY);
for (x=0; x<=99; x++)
set_wah_min(x);
set_option(WAH_MIN, WAH_POSITION_MIN_MAX, x);
for (x=0; x<=99; x++)
set_wah_max(x);
set_option(WAH_MAX, WAH_POSITION_MIN_MAX, x);
for (x=0; x<=12; x++)
set_wah_level(x);
set_option(WAH_LEVEL, WAH_POSITION, x);
set_wah_type(WAH_TYPE_FULLRANGE);
set_option(WAH_TYPE, WAH_POSITION, WAH_TYPE_FULLRANGE);
for (x=0; x<=99; x++)
set_wah_min(x);
set_option(WAH_MIN, WAH_POSITION_MIN_MAX, x);
for (x=0; x<=99; x++)
set_wah_max(x);
set_option(WAH_MAX, WAH_POSITION_MIN_MAX, x);
for (x=0; x<=12; x++)
set_wah_level(x);
set_option(WAH_LEVEL, WAH_POSITION, x);
set_wah_type(WAH_TYPE_CLYDE);
set_option(WAH_TYPE, WAH_POSITION, WAH_TYPE_CLYDE);
for (x=0; x<=99; x++)
set_wah_min(x);
set_option(WAH_MIN, WAH_POSITION_MIN_MAX, x);
for (x=0; x<=99; x++)
set_wah_max(x);
set_option(WAH_MAX, WAH_POSITION_MIN_MAX, x);
for (x=0; x<=12; x++)
set_wah_level(x);
set_option(WAH_LEVEL, WAH_POSITION, x);
set_wah_on_off(TRUE);
set_wah_on_off(FALSE);
set_option(WAH_ON_OFF, WAH_POSITION, 1);
set_option(WAH_ON_OFF, WAH_POSITION, 0);
}
void test_compressor()
{
int x;
set_comp_type(COMP_TYPE_DIGI);
set_option(COMP_TYPE, COMP_POSITION, COMP_TYPE_DIGI);
for (x=0; x<=99; x++)
set_comp_sustain(x);
set_option(COMP_SUSTAIN, COMP_POSITION, x);
for (x=0; x<=99; x++)
set_comp_tone(x);
set_option(COMP_TONE, COMP_POSITION, x);
for (x=0; x<=99; x++)
set_comp_attack(x);
set_option(COMP_ATTACK, COMP_POSITION, x);
for (x=0; x<=99; x++)
set_comp_level(x);
set_option(COMP_LEVEL, COMP_POSITION, x);
set_comp_type(COMP_TYPE_CS);
set_option(COMP_TYPE, COMP_POSITION, COMP_TYPE_CS);
for (x=0; x<=99; x++)
set_comp_sustain(x);
set_option(COMP_SUSTAIN, COMP_POSITION, x);
for (x=0; x<=99; x++)
set_comp_attack(x);
set_option(COMP_ATTACK, COMP_POSITION, x);
for (x=0; x<=99; x++)
set_comp_level(x);
set_option(COMP_LEVEL, COMP_POSITION, x);
set_comp_on_off(TRUE);
set_comp_on_off(FALSE);
set_option(COMP_ON_OFF, COMP_POSITION, 1);
set_option(COMP_ON_OFF, COMP_POSITION, 0);
}
void test_dist()
{
int x;
set_dist_type(DIST_TYPE_SCREAMER);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_SCREAMER);
for (x=0; x<=99; x++)
set_dist_option(DIST_SCREAMER_DRIVE, x);
set_option(DIST_SCREAMER_DRIVE, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_SCREAMER_TONE, x);
set_option(DIST_SCREAMER_TONE, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_SCREAMER_LVL, x);
set_option(DIST_SCREAMER_LVL, DIST_POSITION, x);
set_dist_type(DIST_TYPE_808);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_808);
for (x=0; x<=99; x++)
set_dist_option(DIST_808_OVERDRIVE, x);
set_option(DIST_808_OVERDRIVE, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_808_TONE, x);
set_option(DIST_808_TONE, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_808_LVL, x);
set_option(DIST_808_LVL, DIST_POSITION, x);
set_dist_type(DIST_TYPE_GUYOD);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_GUYOD);
for (x=0; x<=99; x++)
set_dist_option(DIST_GUYOD_DRIVE, x);
set_option(DIST_GUYOD_DRIVE, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_GUYOD_LVL, x);
set_option(DIST_GUYOD_LVL, DIST_POSITION, x);
set_dist_type(DIST_TYPE_DOD250);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_DOD250);
for (x=0; x<=99; x++)
set_dist_option(DIST_DOD250_GAIN, x);
set_option(DIST_DOD250_GAIN, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_DOD250_LVL, x);
set_option(DIST_DOD250_LVL, DIST_POSITION, x);
set_dist_type(DIST_TYPE_RODENT);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_RODENT);
for (x=0; x<=99; x++)
set_dist_option(DIST_RODENT_DIST, x);
set_option(DIST_RODENT_DIST, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_RODENT_FILTER, x);
set_option(DIST_RODENT_FILTER, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_RODENT_LVL, x);
set_option(DIST_RODENT_LVL, DIST_POSITION, x);
set_dist_type(DIST_TYPE_MX);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_MX);
for (x=0; x<=99; x++)
set_dist_option(DIST_MX_DIST, x);
set_option(DIST_MX_DIST, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_MX_OUTPUT, x);
set_option(DIST_MX_OUTPUT, DIST_POSITION, x);
set_dist_type(DIST_TYPE_DS);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_DS);
for (x=0; x<=99; x++)
set_dist_option(DIST_DS_GAIN, x);
set_option(DIST_DS_GAIN, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_DS_TONE, x);
set_option(DIST_DS_TONE, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_DS_LVL, x);
set_option(DIST_DS_LVL, DIST_POSITION, x);
set_dist_type(DIST_TYPE_GRUNGE);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_GRUNGE);
for (x=0; x<=99; x++)
set_dist_option(DIST_GRUNGE_GRUNGE, x);
set_option(DIST_GRUNGE_GRUNGE, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_GRUNGE_FACE, x);
set_option(DIST_GRUNGE_FACE, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_GRUNGE_LOUD, x);
set_option(DIST_GRUNGE_LOUD, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_GRUNGE_BUTT, x);
set_option(DIST_GRUNGE_BUTT, DIST_POSITION, x);
set_dist_type(DIST_TYPE_ZONE);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_ZONE);
for (x=0; x<=99; x++)
set_dist_option(DIST_ZONE_GAIN, x);
set_option(DIST_ZONE_GAIN, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_ZONE_LOW, x);
set_option(DIST_ZONE_LOW, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_ZONE_MID_LVL, x);
set_option(DIST_ZONE_MID_LVL, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_ZONE_MID_FREQ, x);
set_option(DIST_ZONE_MID_FREQ, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_ZONE_HIGH, x);
set_option(DIST_ZONE_HIGH, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_ZONE_LEVEL, x);
set_option(DIST_ZONE_LEVEL, DIST_POSITION, x);
set_dist_type(DIST_TYPE_DEATH);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_DEATH);
for (x=0; x<=99; x++)
set_dist_option(DIST_DEATH_LOW, x);
set_option(DIST_DEATH_LOW, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_DEATH_MID, x);
set_option(DIST_DEATH_MID, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_DEATH_HIGH, x);
set_option(DIST_DEATH_HIGH, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_DEATH_LVL, x);
set_option(DIST_DEATH_LVL, DIST_POSITION, x);
set_dist_type(DIST_TYPE_GONK);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_GONK);
for (x=0; x<=99; x++)
set_dist_option(DIST_GONK_GONK, x);
set_option(DIST_GONK_GONK, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_GONK_SMEAR, x);
set_option(DIST_GONK_SMEAR, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_GONK_SUCK, x);
set_option(DIST_GONK_SUCK, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_GONK_HEAVE, x);
set_option(DIST_GONK_HEAVE, DIST_POSITION, x);
set_dist_type(DIST_TYPE_FUZZY);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_FUZZY);
for (x=0; x<=99; x++)
set_dist_option(DIST_FUZZY_FUZZ, x);
set_option(DIST_FUZZY_FUZZ, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_FUZZY_VOLUME, x);
set_option(DIST_FUZZY_VOLUME, DIST_POSITION, x);
set_dist_type(DIST_TYPE_MP);
set_option(DIST_TYPE, DIST_POSITION, DIST_TYPE_MP);
for (x=0; x<=99; x++)
set_dist_option(DIST_MP_SUSTAIN, x);
set_option(DIST_MP_SUSTAIN, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_MP_TONE, x);
set_option(DIST_MP_TONE, DIST_POSITION, x);
for (x=0; x<=99; x++)
set_dist_option(DIST_MP_VOLUME, x);
set_option(DIST_MP_VOLUME, DIST_POSITION, x);
set_dist_on_off(TRUE);
set_dist_on_off(FALSE);
set_option(DIST_ON_OFF, DIST_POSITION, 1);
set_option(DIST_ON_OFF, DIST_POSITION, 0);
}
void test_presets()
@@ -206,10 +206,10 @@ void test_presets()
int x;
for (x=0; x<=60; x++)
switch_user_preset(x);
switch_preset(PRESETS_USER, x);
for (x=0; x<=60; x++)
switch_system_preset(x);
switch_preset(PRESETS_SYSTEM, x);
for (x=0; x<=99; x++)
set_preset_level(x);
@@ -217,407 +217,418 @@ void test_presets()
void test_pickups()
{
set_pickup_type(PICKUP_TYPE_HB_SC);
set_pickup_type(PICKUP_TYPE_SC_HB);
set_option(PICKUP_TYPE, PICKUP_POSITION, PICKUP_TYPE_HB_SC);
set_option(PICKUP_TYPE, PICKUP_POSITION, PICKUP_TYPE_SC_HB);
set_pickup_on_off(TRUE);
set_pickup_on_off(FALSE);
set_option(PICKUP_ON_OFF, PICKUP_POSITION, 1);
set_option(PICKUP_ON_OFF, PICKUP_POSITION, 0);
}
void test_eq()
{
int x;
set_eq_type(EQ_TYPE_BRIGHT);
set_eq_type(EQ_TYPE_MIDBOOST);
set_eq_type(EQ_TYPE_SCOOP);
set_eq_type(EQ_TYPE_WARM);
set_option(EQ_TYPE, EQ_POSITION, EQ_TYPE_BRIGHT);
set_option(EQ_TYPE, EQ_POSITION, EQ_TYPE_MIDBOOST);
set_option(EQ_TYPE, EQ_POSITION, EQ_TYPE_SCOOP);
set_option(EQ_TYPE, EQ_POSITION, EQ_TYPE_WARM);
for (x=0; x<=99; x++)
set_eq_gain(x);
set_option(AMP_GAIN, AMP_POSITION, x);
for (x=0; x<=99; x++)
set_eq_level(x);
set_option(AMP_LEVEL, AMP_POSITION, x);
for (x=0; x<=0x18; x++)
set_eq_bass(x);
set_option(EQ_BASS, EQ_POSITION, x);
for (x=0; x<=0x18; x++)
set_eq_mid(x);
set_option(EQ_MID, EQ_POSITION, x);
for (x=0; x<=4700; x++)
set_eq_mid_hz(x);
set_option(EQ_MID_HZ, EQ_POSITION, x);
for (x=0; x<=0x18; x++)
set_eq_treble(x);
set_option(EQ_TREBLE, EQ_POSITION, x);
for (x=0; x<=7500; x++)
set_eq_treb_hz(x);
set_option(EQ_TREBLE_HZ, EQ_POSITION, x);
set_eq_on_off(TRUE);
set_eq_on_off(FALSE);
set_option(EQ_ON_OFF, EQ_POSITION, 1);
set_option(EQ_ON_OFF, EQ_POSITION, 0);
}
void test_noisegate()
{
int x;
set_noisegate_type(NOISEGATE_GATE);
set_option(NOISEGATE_TYPE, NOISEGATE_POSITION, NOISEGATE_GATE);
for (x=0; x<=99; x++)
set_gate_option(NOISEGATE_GATE_TRESHOLD, x);
set_option(NOISEGATE_GATE_TRESHOLD, NOISEGATE_POSITION, x);
for (x=0; x<=99; x++)
set_gate_option(NOISEGATE_ATTACK, x);
set_option(NOISEGATE_ATTACK, NOISEGATE_POSITION, x);
for (x=0; x<=99; x++)
set_gate_option(NOISEGATE_RELEASE, x);
set_option(NOISEGATE_RELEASE, NOISEGATE_POSITION, x);
for (x=0; x<=99; x++)
set_gate_option(NOISEGATE_ATTN, x);
set_option(NOISEGATE_ATTN, NOISEGATE_POSITION, x);
set_noisegate_type(NOISEGATE_SWELL);
set_option(NOISEGATE_TYPE, NOISEGATE_POSITION, NOISEGATE_SWELL);
for (x=0; x<=99; x++)
set_gate_option(NOISEGATE_SWELL_SENS, x);
set_option(NOISEGATE_SWELL_SENS, NOISEGATE_POSITION, x);
for (x=0; x<=99; x++)
set_gate_option(NOISEGATE_ATTACK, x);
set_option(NOISEGATE_ATTACK, NOISEGATE_POSITION, x);
for (x=0; x<=99; x++)
set_gate_option(NOISEGATE_RELEASE, x);
set_option(NOISEGATE_RELEASE, NOISEGATE_POSITION, x);
for (x=0; x<=99; x++)
set_gate_option(NOISEGATE_ATTN, x);
set_option(NOISEGATE_ATTN, NOISEGATE_POSITION, x);
set_noisegate_on_off(TRUE);
set_noisegate_on_off(FALSE);
set_option(NOISEGATE_ON_OFF, NOISEGATE_POSITION, 1);
set_option(NOISEGATE_ON_OFF, NOISEGATE_POSITION, 0);
}
void test_chorusfx()
{
int x;
set_chorusfx_type(CHORUS_TYPE_CE);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_CE);
for (x=0; x<=99; x++)
set_chorusfx_option(CE_CHORUS_SPEED, x);
set_option(CE_CHORUS_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_chorusfx_option(CE_CHORUS_DEPTH, x);
set_option(CE_CHORUS_DEPTH, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_DUAL);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_DUAL);
for (x=0; x<=99; x++)
set_chorusfx_option(DUAL_CHORUS_SPEED, x);
set_option(DUAL_CHORUS_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_chorusfx_option(DUAL_CHORUS_DEPTH, x);
set_option(DUAL_CHORUS_DEPTH, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_chorusfx_option(DUAL_CHORUS_LEVEL, x);
set_chorusfx_option(DUAL_CHORUS_WAVE, WAVE_TRI);
set_chorusfx_option(DUAL_CHORUS_WAVE, WAVE_SINE);
set_chorusfx_option(DUAL_CHORUS_WAVE, WAVE_SQUARE);
set_option(DUAL_CHORUS_LEVEL, CHORUSFX_POSITION, x);
set_option(DUAL_CHORUS_WAVE, CHORUSFX_POSITION, WAVE_TRI);
set_option(DUAL_CHORUS_WAVE, CHORUSFX_POSITION, WAVE_SINE);
set_option(DUAL_CHORUS_WAVE, CHORUSFX_POSITION, WAVE_SQUARE);
set_chorusfx_type(CHORUS_TYPE_MULTI);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_MULTI);
for (x=0; x<=99; x++)
set_chorusfx_option(MULTI_CHORUS_SPEED, x);
set_option(MULTI_CHORUS_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_chorusfx_option(MULTI_CHORUS_DEPTH, x);
set_option(MULTI_CHORUS_DEPTH, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_chorusfx_option(MULTI_CHORUS_LEVEL, x);
set_chorusfx_option(MULTI_CHORUS_WAVE, WAVE_TRI);
set_chorusfx_option(MULTI_CHORUS_WAVE, WAVE_SINE);
set_chorusfx_option(MULTI_CHORUS_WAVE, WAVE_SQUARE);
set_option(MULTI_CHORUS_LEVEL, CHORUSFX_POSITION, x);
set_option(MULTI_CHORUS_WAVE, CHORUSFX_POSITION, WAVE_TRI);
set_option(MULTI_CHORUS_WAVE, CHORUSFX_POSITION, WAVE_SINE);
set_option(MULTI_CHORUS_WAVE, CHORUSFX_POSITION, WAVE_SQUARE);
set_chorusfx_type(CHORUS_TYPE_FLANGER);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_FLANGER);
for (x=0; x<=99; x++)
set_flanger_option(FLANGER_SPEED, x);
set_option(FLANGER_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_flanger_option(FLANGER_DEPTH, x);
set_option(FLANGER_DEPTH, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_flanger_option(FLANGER_REGEN, x);
set_option(FLANGER_REGEN, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_flanger_option(FLANGER_LEVEL, x);
set_flanger_option(FLANGER_WAVE, WAVE_TRI);
set_flanger_option(FLANGER_WAVE, WAVE_SINE);
set_flanger_option(FLANGER_WAVE, WAVE_SQUARE);
set_option(FLANGER_LEVEL, CHORUSFX_POSITION, x);
set_option(FLANGER_WAVE, CHORUSFX_POSITION, WAVE_TRI);
set_option(FLANGER_WAVE, CHORUSFX_POSITION, WAVE_SINE);
set_option(FLANGER_WAVE, CHORUSFX_POSITION, WAVE_SQUARE);
set_chorusfx_type(CHORUS_TYPE_MXR_FLANGER);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_MXR_FLANGER);
for (x=0; x<=99; x++)
set_flanger_option(MXR_FLANGER_SPEED, x);
set_option(MXR_FLANGER_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_flanger_option(MXR_FLANGER_WIDTH, x);
set_option(MXR_FLANGER_WIDTH, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_flanger_option(MXR_FLANGER_REGEN, x);
set_option(MXR_FLANGER_REGEN, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_flanger_option(MXR_FLANGER_MANUAL, x);
set_option(MXR_FLANGER_MANUAL, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_PHASER);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_PHASER);
for (x=0; x<=99; x++)
set_flanger_option(PHASER_SPEED, x);
set_option(PHASER_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_flanger_option(PHASER_DEPTH, x);
set_option(PHASER_DEPTH, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_flanger_option(PHASER_REGEN, x);
set_option(PHASER_REGEN, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_flanger_option(PHASER_LEVEL, x);
set_flanger_option(PHASER_WAVE, WAVE_TRI);
set_flanger_option(PHASER_WAVE, WAVE_SINE);
set_flanger_option(PHASER_WAVE, WAVE_SQUARE);
set_option(PHASER_LEVEL, CHORUSFX_POSITION, x);
set_option(PHASER_WAVE, CHORUSFX_POSITION, WAVE_TRI);
set_option(PHASER_WAVE, CHORUSFX_POSITION, WAVE_SINE);
set_option(PHASER_WAVE, CHORUSFX_POSITION, WAVE_SQUARE);
set_chorusfx_type(CHORUS_TYPE_VIBRATO);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_VIBRATO);
for (x=0; x<=99; x++)
set_vibrato_option(VIBRATO_SPEED, x);
set_option(VIBRATO_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_vibrato_option(VIBRATO_DEPTH, x);
set_option(VIBRATO_DEPTH, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_ROTARY);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_ROTARY);
for (x=0; x<=99; x++)
set_vibrato_option(ROTARY_SPEED, x);
set_option(ROTARY_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_vibrato_option(ROTARY_INTENSITY, x);
set_option(ROTARY_INTENSITY, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_vibrato_option(ROTARY_DOPPLER, x);
set_option(ROTARY_DOPPLER, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_vibrato_option(ROTARY_CROSSOVER, x);
set_option(ROTARY_CROSSOVER, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_VIBROPAN);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_VIBROPAN);
for (x=0; x<=99; x++)
set_vibrato_option(VIBROPAN_SPEED, x);
set_option(VIBROPAN_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_vibrato_option(VIBROPAN_DEPTH, x);
set_option(VIBROPAN_DEPTH, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_vibrato_option(VIBROPAN_VIBRA, x);
set_vibrato_option(VIBROPAN_WAVE, WAVE_TRI);
set_vibrato_option(VIBROPAN_WAVE, WAVE_SINE);
set_vibrato_option(VIBROPAN_WAVE, WAVE_SQUARE);
set_option(VIBROPAN_VIBRA, CHORUSFX_POSITION, x);
set_option(VIBROPAN_WAVE, CHORUSFX_POSITION, WAVE_TRI);
set_option(VIBROPAN_WAVE, CHORUSFX_POSITION, WAVE_SINE);
set_option(VIBROPAN_WAVE, CHORUSFX_POSITION, WAVE_SQUARE);
set_chorusfx_type(CHORUS_TYPE_TREMOLO);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_TREMOLO);
for (x=0; x<=99; x++)
set_tremolo_option(TREMOLO_SPEED, x);
set_option(TREMOLO_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_tremolo_option(TREMOLO_DEPTH, x);
set_tremolo_option(TREMOLO_WAVE, WAVE_TRI);
set_tremolo_option(TREMOLO_WAVE, WAVE_SINE);
set_tremolo_option(TREMOLO_WAVE, WAVE_SQUARE);
set_option(TREMOLO_DEPTH, CHORUSFX_POSITION, x);
set_option(TREMOLO_WAVE, CHORUSFX_POSITION, WAVE_TRI);
set_option(TREMOLO_WAVE, CHORUSFX_POSITION, WAVE_SINE);
set_option(TREMOLO_WAVE, CHORUSFX_POSITION, WAVE_SQUARE);
set_chorusfx_type(CHORUS_TYPE_PANNER);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_PANNER);
for (x=0; x<=99; x++)
set_tremolo_option(PANNER_SPEED, x);
set_option(PANNER_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_tremolo_option(PANNER_DEPTH, x);
set_tremolo_option(PANNER_WAVE, WAVE_TRI);
set_tremolo_option(PANNER_WAVE, WAVE_SINE);
set_tremolo_option(PANNER_WAVE, WAVE_SQUARE);
set_option(PANNER_DEPTH, CHORUSFX_POSITION, x);
set_option(PANNER_WAVE, CHORUSFX_POSITION, WAVE_TRI);
set_option(PANNER_WAVE, CHORUSFX_POSITION, WAVE_SINE);
set_option(PANNER_WAVE, CHORUSFX_POSITION, WAVE_SQUARE);
set_chorusfx_type(CHORUS_TYPE_ENVELOPE);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_ENVELOPE);
for (x=0; x<=99; x++)
set_envelope_option(ENVELOPE_SENSITIVITY, x);
set_option(ENVELOPE_SENSITIVITY, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_envelope_option(ENVELOPE_RANGE, x);
set_option(ENVELOPE_RANGE, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_AUTOYA);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_AUTOYA);
for (x=0; x<=99; x++)
set_ya_option(AUTOYA_SPEED, x);
set_option(AUTOYA_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_ya_option(AUTOYA_INTENSITY, x);
set_option(AUTOYA_INTENSITY, CHORUSFX_POSITION, x);
for (x=0; x<=0x31; x++)
set_ya_option(AUTOYA_RANGE, x);
set_option(AUTOYA_RANGE, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_YAYA);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_YAYA);
for (x=0; x<=99; x++)
set_ya_option(YAYA_PEDAL, x);
set_option(YAYA_PEDAL, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_ya_option(YAYA_INTENSITY, x);
set_option(YAYA_INTENSITY, CHORUSFX_POSITION, x);
for (x=0; x<=0x31; x++)
set_ya_option(YAYA_RANGE, x);
set_option(YAYA_RANGE, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_STEP_FILTER);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_STEP_FILTER);
for (x=0; x<=99; x++)
set_filter_option(STEP_FILTER_SPEED, x);
set_option(STEP_FILTER_SPEED, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_filter_option(STEP_FILTER_INTENSITY, x);
set_option(STEP_FILTER_INTENSITY, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_WHAMMY);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_OCT_UP);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_2OCT_UP);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_2ND_DN);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_RV_2ND);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_4TH_DN);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_OCT_DN);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_2OCT_DN);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_DIV_BMB);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_M3_MA);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_2ND_MA3);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_3RD_4TH);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_4TH_5TH);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_5TH_OCT);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_HOCT_UP);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_HOCT_DN);
set_whammy_option(WHAMMY_AMOUNT, WHAMMY_OCT_UD);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_WHAMMY);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_OCT_UP);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_2OCT_UP);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_2ND_DN);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_RV_2ND);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_4TH_DN);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_OCT_DN);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_2OCT_DN);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_DIV_BMB);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_M3_MA);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_2ND_MA3);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_3RD_4TH);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_4TH_5TH);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_5TH_OCT);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_HOCT_UP);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_HOCT_DN);
set_option(WHAMMY_AMOUNT, CHORUSFX_POSITION, WHAMMY_OCT_UD);
for (x=0; x<=99; x++)
set_whammy_option(WHAMMY_PEDAL, x);
set_option(WHAMMY_PEDAL, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_whammy_option(WHAMMY_MIX, x);
set_option(WHAMMY_MIX, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_PITCH_SHIFT);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_PITCH_SHIFT);
for (x=0; x<=0x30; x++)
set_pitch_option(PITCH_AMOUNT, x);
set_option(PITCH_AMOUNT, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_pitch_option(PITCH_MIX, x);
set_option(PITCH_MIX, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_DETUNE);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_DETUNE);
for (x=0; x<=0x30; x++)
set_pitch_option(DETUNE_AMOUNT, x);
set_option(DETUNE_AMOUNT, CHORUSFX_POSITION, x);
for (x=0; x<=99; x++)
set_pitch_option(DETUNE_LEVEL, x);
set_option(DETUNE_LEVEL, CHORUSFX_POSITION, x);
set_chorusfx_type(CHORUS_TYPE_IPS);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_OCT_D);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_7TH_DN);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_6TH_DN);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_5TH_DN);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_4TH_DN);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_3RD_DN);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_2ND_DN);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_2ND_UP);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_3RD_UP);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_4TH_UP);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_5TH_UP);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_6TH_UP);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_7TH_UP);
set_ips_option(IPS_SHIFT_AMOUNT, IPS_OCT_U);
set_ips_option(IPS_KEY, IPS_E);
set_ips_option(IPS_KEY, IPS_F);
set_ips_option(IPS_KEY, IPS_GB);
set_ips_option(IPS_KEY, IPS_G);
set_ips_option(IPS_KEY, IPS_AB);
set_ips_option(IPS_KEY, IPS_A);
set_ips_option(IPS_KEY, IPS_BB);
set_ips_option(IPS_KEY, IPS_B);
set_ips_option(IPS_KEY, IPS_C);
set_ips_option(IPS_KEY, IPS_DD);
set_ips_option(IPS_KEY, IPS_D);
set_ips_option(IPS_KEY, IPS_EB);
set_ips_option(IPS_SCALE, IPS_MAJOR);
set_ips_option(IPS_SCALE, IPS_MINOR);
set_ips_option(IPS_SCALE, IPS_DORIA);
set_ips_option(IPS_SCALE, IPS_MIXLYD);
set_ips_option(IPS_SCALE, IPS_LYDIAN);
set_ips_option(IPS_SCALE, IPS_HMINO);
set_option(CHORUSFX_TYPE, CHORUSFX_POSITION, CHORUS_TYPE_IPS);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_OCT_D);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_7TH_DN);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_6TH_DN);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_5TH_DN);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_4TH_DN);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_3RD_DN);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_2ND_DN);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_2ND_UP);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_3RD_UP);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_4TH_UP);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_5TH_UP);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_6TH_UP);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_7TH_UP);
set_option(IPS_SHIFT_AMOUNT, CHORUSFX_POSITION, IPS_OCT_U);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_E);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_F);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_GB);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_G);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_AB);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_A);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_BB);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_B);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_C);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_DD);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_D);
set_option(IPS_KEY, CHORUSFX_POSITION, IPS_EB);
set_option(IPS_SCALE, CHORUSFX_POSITION, IPS_MAJOR);
set_option(IPS_SCALE, CHORUSFX_POSITION, IPS_MINOR);
set_option(IPS_SCALE, CHORUSFX_POSITION, IPS_DORIA);
set_option(IPS_SCALE, CHORUSFX_POSITION, IPS_MIXLYD);
set_option(IPS_SCALE, CHORUSFX_POSITION, IPS_LYDIAN);
set_option(IPS_SCALE, CHORUSFX_POSITION, IPS_HMINO);
for (x=0; x<=99; x++)
set_ips_option(IPS_LEVEL, x);
set_option(IPS_LEVEL, CHORUSFX_POSITION, x);
set_chorusfx_on_off(TRUE);
set_chorusfx_on_off(FALSE);
set_option(CHORUSFX_ON_OFF, CHORUSFX_POSITION, 1);
set_option(CHORUSFX_ON_OFF, CHORUSFX_POSITION, 0);
}
void test_delay()
{
int x;
set_delay_type(DELAY_TYPE_ANALOG);
set_option(DELAY_TYPE, DELAY_POSITION, DELAY_TYPE_ANALOG);
for (x=0; x<=139; x++)
set_delay_time(x);
set_option(DELAY_TIME, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(ANALOG_LEVEL, x);
set_option(ANALOG_LEVEL, DELAY_POSITION, x);
for (x=0; x<=100; x++)
set_delay_option(ANALOG_REPEATS, x);
set_option(ANALOG_REPEATS, DELAY_POSITION, x);
set_delay_type(DELAY_TYPE_DIGITAL);
set_option(DELAY_TYPE, DELAY_POSITION, DELAY_TYPE_DIGITAL);
for (x=0; x<=139; x++)
set_delay_time(x);
set_option(DELAY_TIME, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(DIGITAL_LEVEL, x);
set_option(DIGITAL_LEVEL, DELAY_POSITION, x);
for (x=0; x<=100; x++)
set_delay_option(DIGITAL_REPEATS, x);
set_option(DIGITAL_REPEATS, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(DIGITAL_DUCKER_THRESH, x);
set_option(DIGITAL_DUCKER_THRESH, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(DIGITAL_DUCKER_LEVEL, x);
set_option(DIGITAL_DUCKER_LEVEL, DELAY_POSITION, x);
set_delay_type(DELAY_TYPE_MODULATED);
set_option(DELAY_TYPE, DELAY_POSITION, DELAY_TYPE_MODULATED);
for (x=0; x<=139; x++)
set_delay_time(x);
set_option(DELAY_TIME, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(MODULATED_LEVEL, x);
set_option(MODULATED_LEVEL, DELAY_POSITION, x);
for (x=0; x<=100; x++)
set_delay_option(MODULATED_REPEATS, x);
set_option(MODULATED_REPEATS, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(MODULATED_DEPTH, x);
set_option(MODULATED_DEPTH, DELAY_POSITION, x);
set_delay_type(DELAY_TYPE_PONG);
set_option(DELAY_TYPE, DELAY_POSITION, DELAY_TYPE_PONG);
for (x=0; x<=139; x++)
set_delay_time(x);
set_option(DELAY_TIME, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(PONG_LEVEL, x);
set_option(PONG_LEVEL, DELAY_POSITION, x);
for (x=0; x<=100; x++)
set_delay_option(PONG_REPEATS, x);
set_option(PONG_REPEATS, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(PONG_DUCKER_THRESH, x);
set_option(PONG_DUCKER_THRESH, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(PONG_DUCKER_LEVEL, x);
set_option(PONG_DUCKER_LEVEL, DELAY_POSITION, x);
set_delay_type(DELAY_TYPE_TAPE);
set_option(DELAY_TYPE, DELAY_POSITION, DELAY_TYPE_TAPE);
for (x=0; x<=139; x++)
set_delay_time(x);
set_option(DELAY_TIME, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(TAPE_LEVEL, x);
set_option(TAPE_LEVEL, DELAY_POSITION, x);
for (x=0; x<=100; x++)
set_delay_option(TAPE_REPEATS, x);
set_option(TAPE_REPEATS, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(TAPE_WOW, x);
set_option(TAPE_WOW, DELAY_POSITION, x);
for (x=0; x<=99; x++)
set_delay_option(TAPE_FLUTTER, x);
set_option(TAPE_FLUTTER, DELAY_POSITION, x);
set_delay_on_off(TRUE);
set_delay_on_off(FALSE);
set_option(DELAY_ON_OFF, DELAY_POSITION, 1);
set_option(DELAY_ON_OFF, DELAY_POSITION, 0);
}
void test_reverb()
{
int x;
set_reverb_type(REVERB_TYPE_TWIN);
set_option(REVERB_TYPE, REVERB_POSITION, REVERB_TYPE_TWIN);
for (x=0; x<=99; x++)
set_reverb_option(TWIN_REVERB, x);
set_option(TWIN_REVERB, REVERB_POSITION, x);
set_reverb_type(REVERB_TYPE_LEX_AMBIENCE);
set_option(REVERB_TYPE, REVERB_POSITION, REVERB_TYPE_LEX_AMBIENCE);
for (x=0; x<=15; x++)
set_reverb_option(LEX_AMBIENCE_PREDELAY, x);
set_option(LEX_AMBIENCE_PREDELAY, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_AMBIENCE_DECAY, x);
set_option(LEX_AMBIENCE_DECAY, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_AMBIENCE_LIVELINESS, x);
set_option(LEX_AMBIENCE_LIVELINESS, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_AMBIENCE_LEVEL, x);
set_option(LEX_AMBIENCE_LEVEL, REVERB_POSITION, x);
set_reverb_type(REVERB_TYPE_LEX_STUDIO);
set_option(REVERB_TYPE, REVERB_POSITION, REVERB_TYPE_LEX_STUDIO);
for (x=0; x<=15; x++)
set_reverb_option(LEX_STUDIO_PREDELAY, x);
set_option(LEX_STUDIO_PREDELAY, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_STUDIO_DECAY, x);
set_option(LEX_STUDIO_DECAY, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_STUDIO_LIVELINESS, x);
set_option(LEX_STUDIO_LIVELINESS, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_STUDIO_LEVEL, x);
set_option(LEX_STUDIO_LEVEL, REVERB_POSITION, x);
set_reverb_type(REVERB_TYPE_LEX_ROOM);
set_option(REVERB_TYPE, REVERB_POSITION, REVERB_TYPE_LEX_ROOM);
for (x=0; x<=15; x++)
set_reverb_option(LEX_ROOM_PREDELAY, x);
set_option(LEX_ROOM_PREDELAY, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_ROOM_DECAY, x);
set_option(LEX_ROOM_DECAY, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_ROOM_LIVELINESS, x);
set_option(LEX_ROOM_LIVELINESS, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_ROOM_LEVEL, x);
set_option(LEX_ROOM_LEVEL, REVERB_POSITION, x);
set_reverb_type(REVERB_TYPE_LEX_HALL);
set_option(REVERB_TYPE, REVERB_POSITION, REVERB_TYPE_LEX_HALL);
for (x=0; x<=15; x++)
set_reverb_option(LEX_HALL_PREDELAY, x);
set_option(LEX_HALL_PREDELAY, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_HALL_DECAY, x);
set_option(LEX_HALL_DECAY, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_HALL_LIVELINESS, x);
set_option(LEX_HALL_LIVELINESS, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(LEX_HALL_LEVEL, x);
set_option(LEX_HALL_LEVEL, REVERB_POSITION, x);
set_reverb_type(REVERB_TYPE_EMT240_PLATE);
set_option(REVERB_TYPE, REVERB_POSITION, REVERB_TYPE_EMT240_PLATE);
for (x=0; x<=15; x++)
set_reverb_option(EMT240_PLATE_PREDELAY, x);
set_option(EMT240_PLATE_PREDELAY, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(EMT240_PLATE_DECAY, x);
set_option(EMT240_PLATE_DECAY, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(EMT240_PLATE_LIVELINESS, x);
set_option(EMT240_PLATE_LIVELINESS, REVERB_POSITION, x);
for (x=0; x<=99; x++)
set_reverb_option(EMT240_PLATE_LEVEL, x);
set_option(EMT240_PLATE_LEVEL, REVERB_POSITION, x);
set_reverb_on_off(TRUE);
set_reverb_on_off(FALSE);
set_option(REVERB_ON_OFF, REVERB_POSITION, 1);
set_option(REVERB_ON_OFF, REVERB_POSITION, 0);
}
void test_usb()
{
int x;
for (x=0; x<=100; x++)
set_option(USB_AUDIO_PLAYBACK_MIX, USB_POSITION, x);
for (x=0; x<=36; x++)
set_option(USB_AUDIO_LEVEL, USB_POSITION, x);
}
void test_all()
@@ -632,4 +643,5 @@ void test_all()
test_chorusfx();
test_delay();
test_reverb();
test_usb();
}

View File

@@ -14,6 +14,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses>.
*/
#ifndef GDIGI_TESTS_H
#define GDIGI_TESTS_H
#include "gdigi.h"
void test_wah();
@@ -26,4 +29,7 @@ void test_noisegate();
void test_chorusfx();
void test_delay();
void test_reverb();
void test_usb();
void test_all();
#endif /* GDIGI_TESTS_H */