From 886f01c1e43c5ad04562052a13bb4d9469c3013f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mo=C5=84?= Date: Sun, 22 Feb 2009 22:37:29 +0100 Subject: [PATCH] revise set_wah_type, set_comp_type, set_pickup_type and set_eq_type --- gdigi.c | 67 ++++++++++++++++++++++++++++++++++----------------------- gdigi.h | 23 ++++++++++---------- 2 files changed, 52 insertions(+), 38 deletions(-) diff --git a/gdigi.c b/gdigi.c index f438fef..5765450 100644 --- a/gdigi.c +++ b/gdigi.c @@ -189,14 +189,16 @@ void set_wah_level(int level) void set_wah_type(int type) { - static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x2C, 0x00, 0x00, 0x03, 0x01, 0x00 /* type */, 0x00 /* confirm */, 0xF7}; + /* ID = 128 */ + static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, + 0x2C, 0x00, 0x00, /* ??? */ + 0x03, /* seems to be position */ + 0x01, /* ??? */ + 0x00, /* type */ + 0x00, /* checksum */ 0xF7}; - switch (type) { - case WAH_TYPE_CRY: set_type[14] = 4; break; - case WAH_TYPE_FULLRANGE: set_type[14] = 5; break; - case WAH_TYPE_CLYDE: set_type[14] = 6; break; - default: break; - } + /* 8th bit of type is always 1 - check how does it affect command */ + set_type[14] = (type & 0x007F); set_type[15] = calculate_checksum(set_type, sizeof(set_type), 15) ^ 0x07; @@ -234,13 +236,16 @@ void set_comp_level(int level) void set_comp_type(int type) { - static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x2C, 0x00, 0x4F, 0x04, 0x01, 0x00 /* type */, 0x00 /* checksum */, 0xF7}; + /* ID = 207 */ + static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, + 0x2C, 0x00, 0x4F, /* ??? */ + 0x04, /* seems to be position */ + 0x01, /* ??? */ + 0x00, /* type */ + 0x00, /* checksum */ 0xF7}; - switch (type) { - case COMP_TYPE_DIGI: set_type[14] = 0x43; break; - case COMP_TYPE_CS: set_type[14] = 0x44; break; - default: break; - } + /* 8th bit of type is always 1 - check how does it affect command */ + set_type[14] = (type & 0x007F); set_type[15] = calculate_checksum(set_type, sizeof(set_type), 15) ^ 0x07; @@ -276,13 +281,14 @@ void switch_system_preset(int x) void set_pickup_type(int type) { - static char pickup[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x00, 0x00, 0x40, 0x02, 0x00 /* type1 */, 0x00 /* checksum */, 0xF7}; + /* ID = 64 */ + static char pickup[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, + 0x00, 0x00, 0x40, /* ??? */ + 0x02, /* seems to be position */ + 0x00, /* type */ + 0x00, /* checksum */ 0xF7}; - switch (type) { - case PICKUP_TYPE_HB_SC: pickup[13] = 0x42; break; - case PICKUP_TYPE_SC_HB: pickup[13] = 0x41; break; - default: break; - } + pickup[13] = type; pickup[14] = calculate_checksum(pickup, sizeof(pickup), 14) ^ 0x07; @@ -296,6 +302,7 @@ void set_pickup_on_off(gboolean val) void set_dist_type(int type) { + /* ID = 2432 */ static char set_dist[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x28, 0x09, 0x00, /* ??? */ 0x06, /* seems to be position */ @@ -329,15 +336,17 @@ void set_preset_level(int level) void set_eq_type(int type) { - static char set_eq[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x2A, 0x0C, 0x02, 0x18, 0x02, 0x05, 0x00 /* type1 */, 0x00 /* checksum */, 0xF7}; + /* ID = 3202 */ + static char set_eq[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, + 0x2A, 0x0C, 0x02, + 0x18, /* seems to be position */ + 0x02, /* ??? */ + 0x05, 0x00, /* type */ + 0x00, /* checksum */ 0xF7}; - switch (type) { - case EQ_TYPE_BRIGHT: set_eq[15] = 0x42; break; - case EQ_TYPE_MIDBOOST: set_eq[15] = 0x40; break; - case EQ_TYPE_SCOOP: set_eq[15] = 0x41; break; - case EQ_TYPE_WARM: set_eq[15] = 0x43; break; - default: break; - } + /* 8th bit of type is always 1 - check how does it affect command */ + set_eq[14] = ((type & 0xFF00) >> 8); + set_eq[15] = ((type & 0x007F)); set_eq[16] = calculate_checksum(set_eq, sizeof(set_eq), 16) ^ 0x07; @@ -483,6 +492,7 @@ void set_eq_on_off(gboolean val) void set_noisegate_type(int type) { + /* ID = 704 */ static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x28, 0x02, 0x40, /* ??? */ 0x0C, /* seems to be position */ @@ -516,6 +526,7 @@ void set_chorusfx_option(guint32 option, int x) void set_chorusfx_type(int type) { + /* ID = 768 */ static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x00 /* ? */, 0x03, 0x00, /* ??? */ 0x0E, /* seems to be position */ @@ -563,6 +574,7 @@ void set_delay_time(int x) void set_delay_type(int type) { + /* ID = 1856 */ static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x08, 0x07, 0x40, /* ??? */ 0x0F, /* seems to be position */ @@ -596,6 +608,7 @@ void set_reverb_option(guint32 option, int x) void set_reverb_type(int type) { + /* ID = 1920 */ static char set_type[] = {0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, 0x28, 0x07, 0x00, /* ??? */ 0x10, /* seems to be position */ diff --git a/gdigi.h b/gdigi.h index 2a27b7a..24c8ab2 100644 --- a/gdigi.h +++ b/gdigi.h @@ -18,9 +18,9 @@ #include 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 @@ -34,8 +34,8 @@ enum { #define WAH_LEVEL 133 enum { - COMP_TYPE_DIGI = 0, - COMP_TYPE_CS + COMP_TYPE_DIGI = 195, + COMP_TYPE_CS = 196 }; #define COMP_ON_OFF 193 @@ -47,8 +47,8 @@ enum { #define COMP_LEVEL 210 enum { - PICKUP_TYPE_HB_SC = 0, - PICKUP_TYPE_SC_HB + PICKUP_TYPE_HB_SC = 66, + PICKUP_TYPE_SC_HB = 65 }; #define PICKUP_ON_OFF 65 @@ -119,10 +119,10 @@ enum { #define PRESET_LEVEL 2626 enum { - EQ_TYPE_BRIGHT = 0, - EQ_TYPE_MIDBOOST, - EQ_TYPE_SCOOP, - EQ_TYPE_WARM + EQ_TYPE_BRIGHT = 1474, + EQ_TYPE_MIDBOOST = 1472, + EQ_TYPE_SCOOP = 1473, + EQ_TYPE_WARM = 1475 }; #define AMP_POSITION 8 @@ -136,6 +136,7 @@ enum { #define EQ_BASS 3203 #define EQ_MID 3204 #define EQ_TREBLE 3205 + enum { NOISEGATE_GATE = 768, NOISEGATE_SWELL = 769