diff --git a/gdigi.c b/gdigi.c index c196834..f438fef 100644 --- a/gdigi.c +++ b/gdigi.c @@ -296,24 +296,15 @@ void set_pickup_on_off(gboolean val) void set_dist_type(int type) { - static char set_dist[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x28, 0x09, 0x00, 0x06, 0x02, 0x05, 0x00 /* type1 */, 0x00 /* checksum */, 0xF7}; + static char set_dist[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, + 0x28, 0x09, 0x00, /* ??? */ + 0x06, /* seems to be position */ + 0x02, /* ??? */ + 0x00, 0x00, /* type */ + 0x00 /* checksum */, 0xF7}; - switch (type) { - case DIST_TYPE_SCREAMER: set_dist[15] = 0x00; break; - case DIST_TYPE_808: set_dist[15] = 0x0C; break; - case DIST_TYPE_GUYOD: set_dist[15] = 0x05; break; - case DIST_TYPE_DOD250: set_dist[15] = 0x03; break; - case DIST_TYPE_RODENT: set_dist[15] = 0x01; break; - case DIST_TYPE_MX: set_dist[15] = 0x0B; break; - case DIST_TYPE_DS: set_dist[15] = 0x02; break; - case DIST_TYPE_GRUNGE: set_dist[15] = 0x07; break; - case DIST_TYPE_ZONE: set_dist[15] = 0x09; break; - case DIST_TYPE_DEATH: set_dist[15] = 0x0E; break; - case DIST_TYPE_GONK: set_dist[15] = 0x0D; break; - case DIST_TYPE_FUZZY: set_dist[15] = 0x08; break; - case DIST_TYPE_MP: set_dist[15] = 0x04; break; - default: break; - } + set_dist[14] = ((type & 0xFF00) >> 8); + set_dist[15] = ((type & 0x00FF)); set_dist[16] = calculate_checksum(set_dist, sizeof(set_dist), 16) ^ 0x07; @@ -492,13 +483,15 @@ void set_eq_on_off(gboolean val) void set_noisegate_type(int type) { - static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x28, 0x02, 0x40, 0x0C, 0x02, 0x03, 0x00 /* type1 */, 0x00 /* checksum */, 0xF7}; + static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, + 0x28, 0x02, 0x40, /* ??? */ + 0x0C, /* seems to be position */ + 0x02, /* ??? */ + 0x00, 0x00, /* type */ + 0x00 /* checksum */, 0xF7}; - switch (type) { - case NOISEGATE_GATE: set_type[15] = 0; break; - case NOISEGATE_SWELL: set_type[15] = 1; break; - default: break; - } + set_type[14] = ((type & 0xFF00) >> 8); + set_type[15] = ((type & 0x00FF)); set_type[16] = calculate_checksum(set_type, sizeof(set_type), 16) ^ 0x07; @@ -523,30 +516,20 @@ void set_chorusfx_option(guint32 option, int x) void set_chorusfx_type(int type) { - static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x00 /* type */, 0x03, 0x00, 0x0E, 0x02, 0x00 /* type */, 0x00 /* type1 */, 0x00 /* checksum */, 0xF7}; + static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, + 0x00 /* ? */, 0x03, 0x00, /* ??? */ + 0x0E, /* seems to be position */ + 0x02, /* ??? */ + 0x00, 0x00, /* type */ + 0x00 /* checksum */, 0xF7}; - switch (type) { - case CHORUS_TYPE_CE: set_type[9] = 0x08; set_type[15] = 0x7B; set_type[14] = 0x03; break; - case CHORUS_TYPE_DUAL: set_type[9] = 0x08; set_type[15] = 0x79; set_type[14] = 0x03; break; - case CHORUS_TYPE_MULTI: set_type[9] = 0x08; set_type[15] = 0x7A; set_type[14] = 0x03; break; - case CHORUS_TYPE_FLANGER: set_type[9] = 0x08; set_type[15] = 0x7D; set_type[14] = 0x03; break; - case CHORUS_TYPE_MXR_FLANGER: set_type[9] = 0x08; set_type[15] = 0x7F; set_type[14] = 0x03; break; - case CHORUS_TYPE_PHASER: set_type[9] = 0x0A; set_type[15] = 0x01; set_type[14] = 0x03; break; - case CHORUS_TYPE_VIBRATO: set_type[9] = 0x08; set_type[15] = 0x60; set_type[14] = 0x03; break; - case CHORUS_TYPE_ROTARY: set_type[9] = 0x08; set_type[15] = 0x61; set_type[14] = 0x03; break; - case CHORUS_TYPE_VIBROPAN: set_type[9] = 0x0A; set_type[15] = 0x0F; set_type[14] = 0x03; break; - case CHORUS_TYPE_TREMOLO: set_type[9] = 0x08; set_type[15] = 0x5E; set_type[14] = 0x03; break; - case CHORUS_TYPE_PANNER: set_type[9] = 0x08; set_type[15] = 0x5F; set_type[14] = 0x03; break; - case CHORUS_TYPE_ENVELOPE: set_type[9] = 0x0A; set_type[15] = 0x0A; set_type[14] = 0x03; break; - case CHORUS_TYPE_AUTOYA: set_type[9] = 0x0A; set_type[15] = 0x0B; set_type[14] = 0x03; break; - case CHORUS_TYPE_YAYA: set_type[9] = 0x0A; set_type[15] = 0x0C; set_type[14] = 0x03; break; - case CHORUS_TYPE_STEP_FILTER: set_type[9] = 0x0A; set_type[15] = 0x0D; set_type[14] = 0x03; break; - case CHORUS_TYPE_WHAMMY: set_type[9] = 0x08; set_type[15] = 0x40; set_type[14] = 0x05; break; - case CHORUS_TYPE_PITCH_SHIFT: set_type[9] = 0x08; set_type[15] = 0x43; set_type[14] = 0x05; break; - case CHORUS_TYPE_DETUNE: set_type[9] = 0x08; set_type[15] = 0x42; set_type[14] = 0x05; break; - case CHORUS_TYPE_IPS: set_type[9] = 0x08; set_type[15] = 0x41; set_type[14] = 0x05; break; - default: break; - } + if (((type & 0x80) >> 7) == 1) + set_type[9] = 0x0A; + else + set_type[9] = 0x08; + + set_type[14] = ((type & 0xFF00) >> 8); + set_type[15] = ((type & 0x007F)); set_type[16] = calculate_checksum(set_type, sizeof(set_type), 16) ^ 0x07; @@ -580,16 +563,15 @@ void set_delay_time(int x) void set_delay_type(int type) { - static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x08, 0x07, 0x40, 0x0F, 0x02, 0x04, 0x00 /* type1 */, 0x00 /* checksum */, 0xF7}; + static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, + 0x08, 0x07, 0x40, /* ??? */ + 0x0F, /* seems to be position */ + 0x02, /* ??? */ + 0x00, 0x00 /* type */, + 0x00 /* checksum */, 0xF7}; - switch (type) { - case DELAY_TYPE_ANALOG: set_type[15] = 0x16; break; - case DELAY_TYPE_DIGITAL: set_type[15] = 0x15; break; - case DELAY_TYPE_MODULATED: set_type[15] = 0x17; break; - case DELAY_TYPE_PONG: set_type[15] = 0x18; break; - case DELAY_TYPE_TAPE: set_type[15] = 0x19; break; - default: break; - } + set_type[14] = ((type & 0xFF00) >> 8); + set_type[15] = ((type & 0x00FF)); set_type[16] = calculate_checksum(set_type, sizeof(set_type), 16) ^ 0x07; @@ -614,17 +596,15 @@ void set_reverb_option(guint32 option, int x) void set_reverb_type(int type) { - static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x28, 0x07, 0x00, 0x10, 0x02, 0x04, 0x00 /* type1 */, 0x00 /* checksum */, 0xF7}; + static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, + 0x28, 0x07, 0x00, /* ??? */ + 0x10, /* seems to be position */ + 0x02, /* ??? */ + 0x00, 0x00, /* type1 */ + 0x00 /* checksum */, 0xF7}; - switch (type) { - case REVERB_TYPE_TWIN: set_type[15] = 0x7A; break; - case REVERB_TYPE_LEX_AMBIENCE: set_type[15] = 0x7E; break; - case REVERB_TYPE_LEX_STUDIO: set_type[15] = 0x7D; break; - case REVERB_TYPE_LEX_ROOM: set_type[15] = 0x7C; break; - case REVERB_TYPE_LEX_HALL: set_type[15] = 0x7B; break; - case REVERB_TYPE_EMT240_PLATE: set_type[15] = 0x7F; break; - default: break; - } + set_type[14] = ((type & 0xFF00) >> 8); + set_type[15] = ((type & 0x00FF)); set_type[16] = calculate_checksum(set_type, sizeof(set_type), 16) ^ 0x07; diff --git a/gdigi.h b/gdigi.h index a74aa80..2a27b7a 100644 --- a/gdigi.h +++ b/gdigi.h @@ -55,19 +55,19 @@ enum { #define PICKUP_POSITION 2 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 + 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_ON_OFF 2433 @@ -137,8 +137,8 @@ enum { #define EQ_MID 3204 #define EQ_TREBLE 3205 enum { - NOISEGATE_GATE = 0, - NOISEGATE_SWELL + NOISEGATE_GATE = 768, + NOISEGATE_SWELL = 769 }; #define NOISEGATE_ON_OFF 705 @@ -154,25 +154,25 @@ enum { #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 CHORUSFX_ON_OFF 769 @@ -321,11 +321,11 @@ 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 DELAY_ON_OFF 1857 @@ -354,12 +354,12 @@ enum { #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 REVERB_ON_OFF 1921