From 157fba038001e972de01cc85ebd5dfbb9a94ec01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mo=C5=84?= Date: Tue, 3 Mar 2009 22:31:25 +0100 Subject: [PATCH] make set_option wrapper to send_message --- TODO | 5 +- gdigi.c | 99 ++++++++--------------- gdigi.h | 73 +++++++---------- gui.c | 24 +----- tests.c | 242 -------------------------------------------------------- tests.h | 1 - 6 files changed, 67 insertions(+), 377 deletions(-) diff --git a/TODO b/TODO index e3d9e64..88927a1 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,8 @@ --figure out all magic commands -make complete gui -cabinet models -tone library -effects library -effects level --handling presets (loading, saving, exporting to xml patches) +-handling presets (saving, exporting to xml patches) -buildsystem --fix expression pedal settings (possible types depend on active effects) +-expression pedal settings diff --git a/gdigi.c b/gdigi.c index bb2d5a6..9f411e8 100644 --- a/gdigi.c +++ b/gdigi.c @@ -240,6 +240,33 @@ static gint get_message_id(GString *msg) return -1; } +void append_value(GString *msg, guint value) +{ + /* check how many bytes long the value is */ + guint temp = value; + gint n = 0; + do { + n++; + temp = temp >> 8; + } while (temp); + + if (n == 1) { + if (value & 0x80) + n = 2; + else + g_string_append_printf(msg, "%c", value); + } + + if (n > 1) { + gint x; + g_string_append_printf(msg, "%c", (n | 0x80)); + for (x=0; x> (8*(n-x-1))) & 0xFF)); + } + } +} + /* id - ID as found in preset file position - Position as found in preset file @@ -247,71 +274,13 @@ static gint get_message_id(GString *msg) */ void set_option(guint id, guint position, guint value) { - static char option[] = {0xF0, 0x00, 0x00, 0x10, 0x00, 0x5E, 0x02, 0x41, - 0x00, 0x00, 0x00, /* ID */ - 0x00, /* position */ - 0x00, /* value length (not necesarry) */ - 0x00, 0x00, 0x00, /* value (can be either 1, 2 or 3 bytes) */ - 0x00, /* checksum */ 0xF7}; - - option[8] = ((id & 0x80) >> 2); - - option[9] = ((id & 0xFF00) >> 8); - option[10] = ((id & 0x007F)); - - option[11] = position; - - if (value < 0x80) { - // [12] = value, [13] - checksum, [14] = 0xF7 - option[12] = value; - - option[14] = 0xF7; - option[13] = calculate_checksum(option, 15, 13); - - send_data(option, 15); - } else if (value <= 0xFF) { - option[8] |= 0x08; // there'll be length before value - if (((value & 0x80) >> 7) == 1) - option[8] |= 0x04; - - option[12] = 0x01; - // [13] = value, [14] - checksum, [15] = 0xF7 - option[13] = (value & 0x007F); - - option[15] = 0xF7; - option[14] = calculate_checksum(option, 16, 14); - - send_data(option, 16); - } else if (value <= 0xFFFF) { - option[8] |= 0x08; // there'll be length before value - if (((value & 0x80) >> 7) == 1) - option[8] |= 0x02; - - option[12] = 0x02; - - option[13] = ((value & 0xFF00) >> 8); - option[14] = ((value & 0x007F)); - - option[16] = 0xF7; - option[15] = calculate_checksum(option, 17, 15); - - send_data(option, 17); - } else if (value <= 0xFFFFFF) { - option[8] |= 0x08; // there'll be length before value - if (((value & 0x80) >> 7) == 1) - option[8] |= 0x01; - - option[12] = 0x03; - - option[13] = ((value & 0xFF0000) >> 16); - option[14] = ((value & 0x00FF00) >> 8); - option[15] = ((value & 0x00007F)); - - option[17] = 0xF7; - option[16] = calculate_checksum(option, 18, 16); - - send_data(option, 18); - } + GString *msg = g_string_sized_new(9); + g_string_append_printf(msg, "%c%c%c", + ((id & 0xFF00) >> 8), (id & 0xFF), + position); + append_value(msg, value); + send_message(RECEIVE_PARAMETER_VALUE, msg->str, msg->len); + g_string_free(msg, TRUE); } /* x = 0 to 60 */ diff --git a/gdigi.h b/gdigi.h index 42dd81b..0f3575e 100644 --- a/gdigi.h +++ b/gdigi.h @@ -436,49 +436,6 @@ enum { #define EMT240_PLATE_LIVELINESS 1933 #define EMT240_PLATE_LEVEL 1925 -enum { - EXP_TYPE_NONE = 0, - EXP_TYPE_PICKUP_ENABLE = 131137, - EXP_TYPE_PIKCUP_TYPE = 131136, - EXP_TYPE_COMP_ENABLE = 262337, - EXP_TYPE_COMP_SUST = 262352, - EXP_TYPE_COMP_TONE = 262353, - EXP_TYPE_COMP_LEVEL = 262354, - EXP_TYPE_COMP_ATTACK = 262355, - EXP_TYPE_DIST_ENABLE = 395649, - EXP_TYPE_DIST_DISTORTION = 395653, - EXP_TYPE_DIST_FILTER = 395654, - EXP_TYPE_DIST_VOLUME = 395655, - EXP_TYPE_AMP_ENABLE = 524553, - EXP_TYPE_AMP_GAIN = 526785, - EXP_TYPE_AMP_LEVEL = 526786, - EXP_TYPE_EQ_ENABLE = 1576076, - EXP_TYPE_EQ_BASS = 1576067, - EXP_TYPE_EQ_MID = 1576068, - EXP_TYPE_EQ_TREB = 1576069, - EXP_TYPE_GATE_ENABLE = 787137, - EXP_TYPE_GATE_THRESHOLD = 787142, - EXP_TYPE_GATE_ATTACK = 787144, - EXP_TYPE_GATE_RELEASE = 787145, - EXP_TYPE_GATE_ATTN = 787146, - EXP_TYPE_CHORUSFX_ENABLE = 918273, - EXP_TYPE_PHASER_SPEED = 918466, - EXP_TYPE_PHASER_DEPTH = 918467, - EXP_TYPE_PHASER_REGEN = 918470, - EXP_TYPE_PHASER_WAVEFORM = 918471, - EXP_TYPE_PHASER_LEVEL = 918469, - EXP_TYPE_DELAY_ENABLE = 984897, - EXP_TYPE_DELAY_TIME = 984928, - EXP_TYPE_DELAY_REPEATS = 984903, - EXP_TYPE_DELAY_LEVEL = 984900, - EXP_TYPE_DELAY_DUCK_THRESH = 984929, - EXP_TYPE_DELAY_DUCK_LEVEL = 984930, - EXP_TYPE_REVERB_ENABLE = 1050497, - EXP_TYPE_REVERB_LEVEL = 1050501, - EXP_TYPE_VOLUME_PRE_FX = 854594, - EXP_TYPE_VOLUME_POST_FX = 1116738 -}; - #define EXP_TYPE 8194 #define EXP_POSITION 19 @@ -527,8 +484,38 @@ enum { 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); diff --git a/gui.c b/gui.c index 37ab25b..77d357a 100644 --- a/gui.c +++ b/gui.c @@ -490,29 +490,7 @@ static void action_open_preset_cb(GtkAction *action) (param->id & 0xFF), param->position); - /* check how many bytes long the value is */ - gint temp = param->value; - gint n = 0; - do { - n++; - temp = temp >> 8; - } while (temp); - - if (n == 1) { - if (param->value & 0x80) - n = 2; - else - g_string_append_printf(msg, "%c", param->value); - } - - if (n > 1) { - gint x; - g_string_append_printf(msg, "%c", (n | 0x80)); - for (x=0; xvalue >> (8*(n-x-1))) & 0xFF)); - } - } + append_value(msg, param->value); }; GString *start = g_string_new(NULL); diff --git a/tests.c b/tests.c index 39f8931..ce5271a 100644 --- a/tests.c +++ b/tests.c @@ -620,247 +620,6 @@ void test_reverb() set_option(REVERB_ON_OFF, REVERB_POSITION, 0); } -void test_exp() -{ - int x; - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_NONE); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_PICKUP_ENABLE); - for (x=0; x<=1; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=1; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_PIKCUP_TYPE); - for (x=0; x<=1; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=1; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_COMP_ENABLE); - for (x=0; x<=1; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=1; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_COMP_SUST); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_COMP_TONE); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_COMP_LEVEL); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_COMP_ATTACK); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_DIST_ENABLE); - for (x=0; x<=1; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=1; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_DIST_DISTORTION); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_DIST_FILTER); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_DIST_VOLUME); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_AMP_ENABLE); - for (x=0; x<=1; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=1; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_AMP_GAIN); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_AMP_LEVEL); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_EQ_ENABLE); - for (x=0; x<=1; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=1; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_EQ_BASS); - for (x=0; x<=24; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=24; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_EQ_MID); - for (x=0; x<=24; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=24; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_EQ_TREB); - for (x=0; x<=24; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=24; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_GATE_ENABLE); - for (x=0; x<=1; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=1; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_GATE_THRESHOLD); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_GATE_ATTACK); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_GATE_RELEASE); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_GATE_ATTN); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_CHORUSFX_ENABLE); - for (x=0; x<=1; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=1; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_PHASER_SPEED); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_PHASER_DEPTH); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_PHASER_REGEN); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_PHASER_WAVEFORM); - for (x=0; x<=2; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=2; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_PHASER_LEVEL); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_DELAY_ENABLE); - for (x=0; x<=1; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=1; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_DELAY_TIME); - for (x=0; x<=139; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=139; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_DELAY_REPEATS); - for (x=0; x<=100; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=100; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_DELAY_LEVEL); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_DELAY_DUCK_THRESH); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_DELAY_DUCK_LEVEL); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_REVERB_ENABLE); - for (x=0; x<=1; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=1; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_REVERB_LEVEL); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_VOLUME_PRE_FX); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); - - set_option(EXP_TYPE, EXP_POSITION, EXP_TYPE_VOLUME_POST_FX); - for (x=0; x<=99; x++) - set_option(EXP_MIN, EXP_POSITION, x); - for (x=0; x<=99; x++) - set_option(EXP_MAX, EXP_POSITION, x); -} - void test_usb() { int x; @@ -884,6 +643,5 @@ void test_all() test_chorusfx(); test_delay(); test_reverb(); - test_exp(); test_usb(); } diff --git a/tests.h b/tests.h index 69821ae..d9530d7 100644 --- a/tests.h +++ b/tests.h @@ -29,7 +29,6 @@ void test_noisegate(); void test_chorusfx(); void test_delay(); void test_reverb(); -void test_exp(); void test_usb(); void test_all();