home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 242.lha / GenericLIBrarian / source / tx81z.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-04-07  |  8.9 KB  |  237 lines

  1. /*
  2.  * GLIB - a Generic LIBrarian and editor for synths
  3.  *
  4.  * TX81Z routines for Patch parameters
  5.  */
  6.  
  7. #define OVERLAY1
  8.  
  9. #include "glib.h"
  10. #include <ctype.h>
  11.  
  12. char *visnum(), *visonoff(), *vism3num(), *viswave(), *vismono();
  13. char *visdx1a(), *vistxwave(), *vistxsft();
  14. char *vistxf1(), *vistxf2(), *vistxf3(), *vistxf4();
  15. char *visfx(), *visfix1(), *visfix2(), *visfix3(), *visfix4();
  16. extern int Dopmap[];
  17.  
  18. /* This array contains arbitrary screen labels */
  19. struct labelinfo Ltx81z[] = {
  20. 5,0," O       Dcy Lev Dcy               De  Out     Amp Eg  Key Key EG",
  21. 6,0," P   Atk  1   1   2  Rls Wav  Freq tun Lvl Vel Mod Bia Rat Scl Sft Fix/Ratio",
  22. 7,0," -   --- --- --- --- --- --- ----- --- --- --- --- --- --- --- --- ---------",
  23. 8,0," 1",
  24. 9,0," 2",
  25. 10,0," 3",
  26. 11,0," 4",
  27. 17,0,"-------------------------+",
  28. 18,0,"N = set name  q = quit   |",
  29. 19,0,"K = incr      J = decr   |",
  30. 20,0,"space = play auto-note   |",
  31. 21,0,"                         |",
  32. 22,0,"Auto-Note:               |",
  33. 23,0,"                         |",
  34. -1,-1,NULL
  35. };
  36.  
  37. /* This array defines all the editable parameters. */
  38. struct paraminfo Ptx81z[] = {
  39. "autopitch",    "Pitch",22, 11, 22, 17, visnum, 0, 127, 60, 0,
  40. "autovol",      "Vol",  23, 0, 23, 4, visnum, 0, 127, 63, 0,
  41. "autodur",      "Dur",  23, 8, 23, 12, visnum, 1, 20, 5, 0,
  42. "autochan",     "Chan", 23, 16, 23, 21, visnum, 1, 16, 1, 0,
  43.  
  44. "op1attack",    NULL, -1, -1, 8, 6, visnum, 0, 31, 0, 0,
  45. "op1decay1",    NULL, -1, -1, 8, 10, visnum, 0, 31, 0, 0,
  46. "op1level1",    NULL, -1, -1, 8, 14, visnum, 0, 15, 0, 0,
  47. "op1decay2",    NULL, -1, -1, 8, 18, visnum, 0, 31, 0, 0,
  48. "op1release",   NULL, -1, -1, 8, 22, visnum, 0, 31, 0, 0,
  49. "op1wave",      NULL, -1, -1, 8, 26, vistxwave, 0, 7, 0, 0,
  50. "op1freq",      NULL, -1, -1, 8, 30, vistxf1, 0, 878, 0, 0,
  51. "op1detune",    NULL, -1, -1, 8, 36, vism3num, 0, 6, 0, 0,
  52. "op1outlevel",  NULL, -1, -1, 8, 40, visnum, 0, 99, 0, 0,
  53. "op1velocity",  NULL, -1, -1, 8, 44, visnum, 0, 7, 0, 0,
  54. "op1ampmod",    NULL, -1, -1, 8, 47, visonoff, 0, 1, 0, 0,
  55. "op1egbias",    NULL, -1, -1, 8, 52, visnum, 0, 7, 0, 0,
  56. "op1keyrate",   NULL, -1, -1, 8, 56, visnum, 0, 3, 0, 0,
  57. "op1keyscale",  NULL, -1, -1, 8, 60, visnum, 0, 99, 0, 0,
  58. "op1egsft",     NULL, -1, -1, 8, 63, vistxsft, 0, 3, 0, 0,
  59. "op1fix",       NULL, -1, -1, 8, 69, visfix1, 0, 1, 0, 0,
  60. "op2attack",    NULL, -1, -1, 9, 6, visnum, 0, 31, 0, 0,
  61. "op2decay1",    NULL, -1, -1, 9, 10, visnum, 0, 31, 0, 0,
  62. "op2level1",    NULL, -1, -1, 9, 14, visnum, 0, 15, 0, 0,
  63. "op2decay2",    NULL, -1, -1, 9, 18, visnum, 0, 31, 0, 0,
  64. "op2release",   NULL, -1, -1, 9, 22, visnum, 0, 31, 0, 0,
  65. "op2wave",      NULL, -1, -1, 9, 26, vistxwave, 0, 7, 0, 0,
  66. "op2freq",      NULL, -1, -1, 9, 30, vistxf2, 0, 878, 0, 0,
  67. "op2detune",    NULL, -1, -1, 9, 36, vism3num, 0, 6, 0, 0,
  68. "op2outlevel",  NULL, -1, -1, 9, 40, visnum, 0, 99, 0, 0,
  69. "op2velocity",  NULL, -1, -1, 9, 44, visnum, 0, 7, 0, 0,
  70. "op2ampmod",    NULL, -1, -1, 9, 47, visonoff, 0, 1, 0, 0,
  71. "op2egbias",    NULL, -1, -1, 9, 52, visnum, 0, 7, 0, 0,
  72. "op2keyrate",   NULL, -1, -1, 9, 56, visnum, 0, 3, 0, 0,
  73. "op2keyscale",  NULL, -1, -1, 9, 60, visnum, 0, 99, 0, 0,
  74. "op2egsft",     NULL, -1, -1, 9, 63, vistxsft, 0, 3, 0, 0,
  75. "op2fix",       NULL, -1, -1, 9, 69, visfix2, 0, 1, 0, 0,
  76. "op3attack",    NULL, -1, -1, 10, 6, visnum, 0, 31, 0, 0,
  77. "op3decay1",    NULL, -1, -1, 10, 10, visnum, 0, 31, 0, 0,
  78. "op3level1",    NULL, -1, -1, 10, 14, visnum, 0, 15, 0, 0,
  79. "op3decay2",    NULL, -1, -1, 10, 18, visnum, 0, 31, 0, 0,
  80. "op3release",   NULL, -1, -1, 10, 22, visnum, 0, 31, 0, 0,
  81. "op3wave",      NULL, -1, -1, 10, 26, vistxwave, 0, 7, 0, 0,
  82. "op3freq",      NULL, -1, -1, 10, 30, vistxf3, 0, 878, 0, 0,
  83. "op3detune",    NULL, -1, -1, 10, 36, vism3num, 0, 6, 0, 0,
  84. "op3outlevel",  NULL, -1, -1, 10, 40, visnum, 0, 99, 0, 0,
  85. "op3velocity",  NULL, -1, -1, 10, 44, visnum, 0, 7, 0, 0,
  86. "op3ampmod",    NULL, -1, -1, 10, 47, visonoff, 0, 1, 0, 0,
  87. "op3egbias",    NULL, -1, -1, 10, 52, visnum, 0, 7, 0, 0,
  88. "op3keyrate",   NULL, -1, -1, 10, 56, visnum, 0, 3, 0, 0,
  89. "op3keyscale",  NULL, -1, -1, 10, 60, visnum, 0, 99, 0, 0,
  90. "op3egsft",     NULL, -1, -1, 10, 63, vistxsft, 0, 3, 0, 0,
  91. "op3fix",       NULL, -1, -1, 10, 69, visfix3, 0, 1, 0, 0,
  92. "op4attack",    NULL, -1, -1, 11, 6, visnum, 0, 31, 0, 0,
  93. "op4decay1",    NULL, -1, -1, 11, 10, visnum, 0, 31, 0, 0,
  94. "op4level1",    NULL, -1, -1, 11, 14, visnum, 0, 15, 0, 0,
  95. "op4decay2",    NULL, -1, -1, 11, 18, visnum, 0, 31, 0, 0,
  96. "op4release",   NULL, -1, -1, 11, 22, visnum, 0, 31, 0, 0,
  97. "op4wave",      NULL, -1, -1, 11, 26, vistxwave, 0, 7, 0, 0,
  98. "op4freq",      NULL, -1, -1, 11, 30, vistxf4, 0, 878, 0, 0,
  99. "op4detune",    NULL, -1, -1, 11, 36, vism3num, 0, 6, 0, 0,
  100. "op4outlevel",  NULL, -1, -1, 11, 40, visnum, 0, 99, 0, 0,
  101. "op4velocity",  NULL, -1, -1, 11, 44, visnum, 0, 7, 0, 0,
  102. "op4ampmod",    NULL, -1, -1, 11, 47, visonoff, 0, 1, 0, 0,
  103. "op4egbias",    NULL, -1, -1, 11, 52, visnum, 0, 7, 0, 0,
  104. "op4keyrate",   NULL, -1, -1, 11, 56, visnum, 0, 3, 0, 0,
  105. "op4keyscale",  NULL, -1, -1, 11, 60, visnum, 0, 99, 0, 0,
  106. "op4egsft",     NULL, -1, -1, 11, 63, vistxsft, 0, 3, 0, 0,
  107. "op4fix",       NULL, -1, -1, 11, 69, visfix4, 0, 1, 0, 0,
  108.  
  109. "algorithm",    "Algorithm~l~l~l~l~l~l~l~l~l~d=============",   1, 49, 1, 61, visdx1a, 0, 7, 0, 0,
  110.  
  111. "feedback",     "Feedback",     13, 33, 13, 45, visnum, 0, 7, 0, 0,
  112. "transpose",    "Transpose",    14, 33, 14, 45, visnum, 0, 45, 0, 0,
  113. "lfospeed",     "LFO Speed",    15, 33, 15, 45, visnum, 0, 99, 0, 0,
  114. "lfodelay",     "LFO Delay",    16, 33, 16, 45, visnum, 0, 99, 0, 0,
  115. "lfowave",      "LFO Wave",     17, 33, 17, 45, viswave, 0, 3, 0, 0,
  116. "lfosync",      "LFO Sync",     18, 33, 18, 45, visonoff, 0, 1, 0, 0,
  117. "pitchbend",    "Pitch Bend",   19, 33, 19, 45, visnum, 0, 12, 0, 0,
  118. "portatime",    "Port. Time",   20, 33, 20, 45, visnum, 0, 99, 0, 0,
  119. "portmode",     "Port. Mode",   21, 33, 21, 45, visnum, 0, 1, 0, 0,
  120. "portfoot",     "Port. Foot",   22, 33, 22, 45, visonoff, 0, 1, 0, 0,
  121. "susfoot",      "Sus. Foot",    23, 33, 23, 45, visonoff, 0, 1, 0, 0,
  122. "playmode",     "Mono/Poly",            13, 55, 13, 74, vismono, 0, 1, 0, 0,
  123. "amoddepth",    "Amp Mod Depth",        14, 55, 14, 74, visnum, 0, 99, 0, 0,
  124. "amodsens",     "Amp Mod Sense",        15, 55, 15, 74, visnum, 0, 3, 0, 0,
  125. "pmoddepth",    "Pitch Mod Depth",      16, 55, 16, 74, visnum, 0, 99, 0, 0,
  126. "pmodsens",     "Pitch Mod Sense",      17, 55, 17, 74, visnum, 0, 7, 0, 0,
  127. "modprange",    "Mod Pitch Range",      18, 55, 18, 74, visnum, 0, 99, 0, 0,
  128. "modarange",    "Mod Amp Range",        19, 55, 19, 74, visnum, 0, 99, 0, 0,
  129. "breathprange", "Breath Pitch",         20, 55, 20, 74, visnum, 0, 99, 0, 0,
  130. "breatharange", "Breath Amp",           21, 55, 21, 74, visnum, 0, 99, 0, 0,
  131. "breathpbias",  "Breath Pitch Bias",    22, 55, 22, 74, visnum, 0, 99, 0, 0,
  132. "breathegbias", "Breath EG Bias",       23, 55, 23, 74, visnum, 0, 99, 0, 0,
  133.  
  134. "reverbrate",   "Reverb Rate",          13, 11, 13, 24, visnum, 0, 7, 0, 0,
  135. "fcpitch",      "FC Pitch",             14, 11, 14, 24, visnum, 0, 99, 0, 0,
  136. "fcamp",        "FC Amp",               15, 11, 15, 24, visnum, 0, 99, 0, 0,
  137. NULL,   NULL, -1, -1, -1, -1, visnum, 0, 0, 0, 0
  138. };
  139.  
  140. extern int *txindex;
  141. extern int txleng;
  142.  
  143. char *
  144. vistxwave(v)
  145. {
  146.         static char txbuff[3] = "W ";
  147.         txbuff[1] = v + '1';
  148.         return(txbuff);
  149. }
  150.  
  151. char *visfix1(v) { return(visfx(1,v)); }
  152. char *visfix2(v) { return(visfx(2,v)); }
  153. char *visfix3(v) { return(visfx(3,v)); }
  154. char *visfix4(v) { return(visfx(4,v)); }
  155.  
  156. char *visfx(n,v)
  157. {
  158.         static int lastfx[] = { 0, -1, -1, -1, -1 };
  159.         char buff2[8];
  160.         int fqindex;
  161.  
  162.         if ( lastfx[n] != -1 && lastfx[n] == v )
  163.                 goto nochange;
  164.  
  165.         lastfx[n] = v;
  166.         sprintf(buff2,"op%dfreq",n);
  167.         fqindex = parmindex(buff2);
  168.         if ( v == 0 )
  169.                 P[fqindex].p_max = txleng-1;
  170.         else
  171.                 P[fqindex].p_max = 247;
  172.         if ( P[fqindex].p_val > P[fqindex].p_max )
  173.                 P[fqindex].p_val = P[fqindex].p_max;
  174.         showparam(fqindex,0);
  175. nochange:
  176.         if ( v == 0 )
  177.                 return("ratio");
  178.         else
  179.                 return("fixed");
  180. }
  181.  
  182. char *
  183. vistxsft(v)
  184. {
  185.         switch(v){
  186.         case 0: return("off");
  187.         case 1: return("48");
  188.         case 2: return("24");
  189.         case 3: return("12");
  190.         }
  191.         return("??");
  192. }
  193.  
  194. extern int txfreq[];
  195.  
  196. char *
  197. vistxq(v)
  198. {
  199.         static char fbuff[8];
  200.         int f, n1, n2;
  201.  
  202.         txinit();
  203.         f = txfreq[txindex[v]];
  204.         n1 = f/100;
  205.         n2 = f%100;
  206.         sprintf(fbuff,n2<10?"%d.0%d":"%d.%d",n1,n2);
  207.         return(fbuff);
  208. }
  209.  
  210. char *
  211. visfq(v)
  212. {
  213.         static char fixbuff[8];
  214.  
  215.         sprintf(fixbuff,"%-5d",v+8);
  216.         return(fixbuff);
  217. }
  218.  
  219. char *
  220. visnfix(n,v)
  221. {
  222.         char buff[8];
  223.         int fx;
  224.  
  225.         sprintf(buff,"op%dfix",n);
  226.         fx = getval(buff);
  227.         if ( fx == 0 )
  228.                 return(vistxq(v));
  229.         else
  230.                 return(visfq(v));
  231. }
  232.  
  233. char *vistxf1(v) { return(visnfix(1,v)); }
  234. char *vistxf2(v) { return(visnfix(2,v)); }
  235. char *vistxf3(v) { return(visnfix(3,v)); }
  236. char *vistxf4(v) { return(visnfix(4,v)); }
  237.