/*
 * GLIB - a Generic LIBrarian and editor for synths
 *
 * DX-100 routines
 */

#define OVERLAY1

#include "glib.h"
#include <ctype.h>

char *visnum(), *visonoff(), *vism3num(), *viswave(), *vismono();
char *visfreq(), *visdx1a();

/* This array contains arbitrary screen labels */
struct labelinfo Ldx100[] = {
4,0,"           Dcy Lev Dcy              De  Out     Amp Eg  Key Key",
5,0," OP    Atk  1   1   2  Rls   Freq   tun Lvl Vel Mod Bia Rat Scl",
6,0," --    --- --- --- --- ---   ----   --- --- --- --- --- --- ---",
7,0," 1",
8,0," 2",
9,0," 3",
10,0," 4",
13,0,"-------------------------+",
14,0,"N = set name  q = quit   |",
15,0,"h = left      l = right  |",
16,0,"k = up        j = down   |",
17,0,"K = incr      J = decr   |",
18,0,"space = play auto-note   |",
19,0,"                         |",
20,0,"Auto-Note:               |",
21,0,"                         |",
22,0,"                         |",
23,0,"                         |",
-1,-1,NULL
};

/* This array defines all the editable parameters. */
struct paraminfo Pdx100[] = {
"autopitch",    "Pitch",21, 3, 21, 9, visnum, 0, 127, 60, 0,
"autovol",      "Vol",  21, 14, 21, 19, visnum, 0, 127, 63, 0,
"autodur",      "Dur",  22, 3, 22, 9, visnum, 1, 20, 5, 0,
"autochan",     "Chan", 22, 14, 22, 19, visnum, 1, 16, 1, 0,

"op1attack",    NULL, -1, -1, 7, 8, visnum, 0, 31, 0, 0,
"op1decay1",    NULL, -1, -1, 7, 12, visnum, 0, 31, 0, 0,
"op1level1",    NULL, -1, -1, 7, 16, visnum, 0, 15, 0, 0,
"op1decay2",    NULL, -1, -1, 7, 20, visnum, 0, 31, 0, 0,
"op1release",   NULL, -1, -1, 7, 24, visnum, 0, 31, 0, 0,
"op1freq",      NULL, -1, -1, 7, 29, visfreq, 0, 63, 0, 0,
"op1detune",    NULL, -1, -1, 7, 37, vism3num, 0, 6, 0, 0,
"op1outlevel",  NULL, -1, -1, 7, 41, visnum, 0, 99, 0, 0,
"op1velocity",  NULL, -1, -1, 7, 45, visnum, 0, 7, 0, 0,
"op1ampmod",    NULL, -1, -1, 7, 48, visonoff, 0, 1, 0, 0,
"op1egbias",    NULL, -1, -1, 7, 53, visnum, 0, 7, 0, 0,
"op1keyrate",   NULL, -1, -1, 7, 57, visnum, 0, 3, 0, 0,
"op1keyscale",  NULL, -1, -1, 7, 61, visnum, 0, 99, 0, 0,
"op2attack",    NULL, -1, -1, 8, 8, visnum, 0, 31, 0, 0,
"op2decay1",    NULL, -1, -1, 8, 12, visnum, 0, 31, 0, 0,
"op2level1",    NULL, -1, -1, 8, 16, visnum, 0, 15, 0, 0,
"op2decay2",    NULL, -1, -1, 8, 20, visnum, 0, 31, 0, 0,
"op2release",   NULL, -1, -1, 8, 24, visnum, 0, 31, 0, 0,
"op2freq",      NULL, -1, -1, 8, 29, visfreq, 0, 63, 0, 0,
"op2detune",    NULL, -1, -1, 8, 37, vism3num, 0, 6, 0, 0,
"op2outlevel",  NULL, -1, -1, 8, 41, visnum, 0, 99, 0, 0,
"op2velocity",  NULL, -1, -1, 8, 45, visnum, 0, 7, 0, 0,
"op2ampmod",    NULL, -1, -1, 8, 48, visonoff, 0, 1, 0, 0,
"op2egbias",    NULL, -1, -1, 8, 53, visnum, 0, 7, 0, 0,
"op2keyrate",   NULL, -1, -1, 8, 57, visnum, 0, 3, 0, 0,
"op2keyscale",  NULL, -1, -1, 8, 61, visnum, 0, 99, 0, 0,
"op3attack",    NULL, -1, -1, 9, 8, visnum, 0, 31, 0, 0,
"op3decay1",    NULL, -1, -1, 9, 12, visnum, 0, 31, 0, 0,
"op3level1",    NULL, -1, -1, 9, 16, visnum, 0, 15, 0, 0,
"op3decay2",    NULL, -1, -1, 9, 20, visnum, 0, 31, 0, 0,
"op3release",   NULL, -1, -1, 9, 24, visnum, 0, 31, 0, 0,
"op3freq",      NULL, -1, -1, 9, 29, visfreq, 0, 63, 0, 0,
"op3detune",    NULL, -1, -1, 9, 37, vism3num, 0, 6, 0, 0,
"op3outlevel",  NULL, -1, -1, 9, 41, visnum, 0, 99, 0, 0,
"op3velocity",  NULL, -1, -1, 9, 45, visnum, 0, 7, 0, 0,
"op3ampmod",    NULL, -1, -1, 9, 48, visonoff, 0, 1, 0, 0,
"op3egbias",    NULL, -1, -1, 9, 53, visnum, 0, 7, 0, 0,
"op3keyrate",   NULL, -1, -1, 9, 57, visnum, 0, 3, 0, 0,
"op3keyscale",  NULL, -1, -1, 9, 61, visnum, 0, 99, 0, 0,
"op4attack",    NULL, -1, -1, 10, 8, visnum, 0, 31, 0, 0,
"op4decay1",    NULL, -1, -1, 10, 12, visnum, 0, 31, 0, 0,
"op4level1",    NULL, -1, -1, 10, 16, visnum, 0, 15, 0, 0,
"op4decay2",    NULL, -1, -1, 10, 20, visnum, 0, 31, 0, 0,
"op4release",   NULL, -1, -1, 10, 24, visnum, 0, 31, 0, 0,
"op4freq",      NULL, -1, -1, 10, 29, visfreq, 0, 63, 0, 0,
"op4detune",    NULL, -1, -1, 10, 37, vism3num, 0, 6, 0, 0,
"op4outlevel",  NULL, -1, -1, 10, 41, visnum, 0, 99, 0, 0,
"op4velocity",  NULL, -1, -1, 10, 45, visnum, 0, 7, 0, 0,
"op4ampmod",    NULL, -1, -1, 10, 48, visonoff, 0, 1, 0, 0,
"op4egbias",    NULL, -1, -1, 10, 53, visnum, 0, 7, 0, 0,
"op4keyrate",   NULL, -1, -1, 10, 57, visnum, 0, 3, 0, 0,
"op4keyscale",  NULL, -1, -1, 10, 61, visnum, 0, 99, 0, 0,

"algorithm",    "Algorithm~l~l~l~l~l~l~l~l~l~d=============",   1, 49, 1, 61, visdx1a, 0, 7, 0, 0,

"feedback",     "Feedback",     12, 33, 12, 45, visnum, 0, 7, 0, 0,
"transpose",    "Transpose",    13, 33, 13, 45, visnum, 0, 45, 0, 0,
"lfospeed",     "LFO Speed",    14, 33, 14, 45, visnum, 0, 99, 0, 0,
"lfodelay",     "LFO Delay",    15, 33, 15, 45, visnum, 0, 99, 0, 0,
"lfowave",      "LFO Wave",     16, 33, 16, 45, viswave, 0, 3, 0, 0,
"lfosync",      "LFO Sync",     17, 33, 17, 45, visonoff, 0, 1, 0, 0,
"pitchbend",    "Pitch Bend",   18, 33, 18, 45, visnum, 0, 12, 0, 0,
"portatime",    "Port. Time",   19, 33, 19, 45, visnum, 0, 99, 0, 0,
"portmode",     "Port. Mode",   20, 33, 20, 45, visnum, 0, 1, 0, 0,
"portfoot",     "Port. Foot",   21, 33, 21, 45, visonoff, 0, 1, 0, 0,
"susfoot",      "Sus. Foot",    22, 33, 22, 45, visonoff, 0, 1, 0, 0,
"playmode",     "Mono/Poly",            12, 55, 12, 74, vismono, 0, 1, 0, 0,
"amoddepth",    "Amp Mod Depth",        13, 55, 13, 74, visnum, 0, 99, 0, 0,
"amodsens",     "Amp Mod Sense",        14, 55, 14, 74, visnum, 0, 3, 0, 0,
"pmoddepth",    "Pitch Mod Depth",      15, 55, 15, 74, visnum, 0, 99, 0, 0,
"pmodsens",     "Pitch Mod Sense",      16, 55, 16, 74, visnum, 0, 7, 0, 0,
"modprange",    "Mod Pitch Range",      17, 55, 17, 74, visnum, 0, 99, 0, 0,
"modarange",    "Mod Amp Range",        18, 55, 18, 74, visnum, 0, 99, 0, 0,
"breathprange", "Breath Pitch",         19, 55, 19, 74, visnum, 0, 99, 0, 0,
"breatharange", "Breath Amp",           20, 55, 20, 74, visnum, 0, 99, 0, 0,
"breathpbias",  "Breath Pitch Bias",    21, 55, 21, 74, visnum, 0, 99, 0, 0,
"breathegbias", "Breath EG Bias",       22, 55, 22, 74, visnum, 0, 99, 0, 0,
NULL,   NULL, -1, -1, -1, -1, visnum, 0, 0, 0, 0
};
