parstruct.c 110 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819
  1. /*
  2. * Copyright (c) 1983-2020 Trevor Wishart and Composers Desktop Project Ltd
  3. * http://www.trevorwishart.co.uk
  4. * http://www.composersdesktop.com
  5. *
  6. This file is part of the CDP System.
  7. The CDP System is free software; you can redistribute it
  8. and/or modify it under the terms of the GNU Lesser General Public
  9. License as published by the Free Software Foundation; either
  10. version 2.1 of the License, or (at your option) any later version.
  11. The CDP System is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. GNU Lesser General Public License for more details.
  15. You should have received a copy of the GNU Lesser General Public
  16. License along with the CDP System; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  18. 02111-1307 USA
  19. *
  20. */
  21. /* floatsam version */
  22. #include <stdio.h>
  23. #include <stdlib.h>
  24. #include <string.h>
  25. #include <structures.h>
  26. #include <tkglobals.h>
  27. #include <processno.h>
  28. #include <logic.h>
  29. #include <modeno.h>
  30. #include <special.h>
  31. #include <cdparams.h>
  32. #include <globcon.h>
  33. static int set_param_data(aplptr ap, int special_data,int maxparamcnt,int paramcnt,char *paramlist);
  34. static int set_vflgs(aplptr ap,char *optflags,int optcnt,char *optlist,
  35. char *varflags,int vflagcnt, int vparamcnt,char *varlist);
  36. /****************************** SET_LEGAL_PARAM_STRUCTURE *********************************/
  37. int set_legal_param_structure(int process,int mode, aplptr ap)
  38. {
  39. /* | |m| | | */
  40. /* | |a| | | */
  41. /* | |x| | | */
  42. /* | |p|p| | */
  43. /* | |a|a| | */
  44. /* | special-data |r|r| param | */
  45. /* | |a|a| list | */
  46. /* | |m|m| | */
  47. /* | |c|c| | */
  48. /* | |n|n| | */
  49. /* | |t|t| | */
  50. switch(process) {
  51. case(ACCU): return set_param_data(ap,0 ,0,0,"" );
  52. case(ALT): return set_param_data(ap,0 ,0,0,"" );
  53. case(ARPE): return set_param_data(ap,0 ,2,2,"iD" );
  54. case(AVRG): return set_param_data(ap,0 ,1,1,"I" );
  55. case(BARE): return set_param_data(ap,0 ,0,0,"" );
  56. case(BLTR): return set_param_data(ap,0 ,2,2,"II" );
  57. case(BLUR): return set_param_data(ap,0 ,1,1,"I" );
  58. case(BRIDGE): return set_param_data(ap,0 ,0,0,"" );
  59. case(CHANNEL): return set_param_data(ap,0 ,1,1,"d" );
  60. case(CHORD): return set_param_data(ap,SEMIT_TRANSPOS_SET ,0,0,"" );
  61. case(CHORUS):
  62. switch(mode) {
  63. case(CH_AMP):
  64. return set_param_data(ap,0 ,2,1,"D0" );
  65. case(CH_FRQ):
  66. case(CH_FRQ_UP):
  67. case(CH_FRQ_DN):
  68. return set_param_data(ap,0 ,2,1,"0D" );
  69. case(CH_AMP_FRQ):
  70. case(CH_AMP_FRQ_UP):
  71. case(CH_AMP_FRQ_DN):
  72. return set_param_data(ap,0 ,2,2,"DD" );
  73. }
  74. break;
  75. case(CLEAN):
  76. switch(mode) {
  77. case(FROMTIME):
  78. case(ANYWHERE):
  79. case(FILTERING):
  80. return set_param_data(ap,0 ,1,1,"d" );
  81. case(COMPARING):
  82. return set_param_data(ap,0 ,1,0,"0" );
  83. }
  84. break;
  85. case(CROSS): return set_param_data(ap,0 ,0,0,"" );
  86. case(CUT): return set_param_data(ap,0 ,2,2,"dd" );
  87. case(DIFF): return set_param_data(ap,0 ,0,0,"" );
  88. case(DRUNK): return set_param_data(ap,0 ,3,3,"idd" );
  89. case(EXAG): return set_param_data(ap,0 ,1,1,"D" );
  90. case(FILT):
  91. switch(mode) {
  92. case(F_HI):
  93. case(F_HI_NORM):
  94. case(F_LO):
  95. case(F_LO_NORM):
  96. return set_param_data(ap,0 ,4,2,"D0D0" );
  97. case(F_HI_GAIN):
  98. case(F_LO_GAIN):
  99. return set_param_data(ap,0 ,4,3,"D0Dd" );
  100. case(F_BND):
  101. case(F_BND_NORM):
  102. case(F_NOTCH):
  103. case(F_NOTCH_NORM):
  104. return set_param_data(ap,0 ,4,3,"DDD0" );
  105. case(F_BAND_GAIN):
  106. case(F_NOTCH_GAIN):
  107. return set_param_data(ap,0 ,4,4,"DDDd" );
  108. }
  109. break;
  110. case(FMNTSEE): return set_param_data(ap,0 ,0,0,"" );
  111. case(FOCUS): return set_param_data(ap,0 ,2,2,"iD" );
  112. case(FOLD): return set_param_data(ap,0 ,2,2,"DD" );
  113. case(FORM): return set_param_data(ap,0 ,0,0,"" );
  114. case(FORMANTS): return set_param_data(ap,0 ,0,0,"" );
  115. case(FORMSEE): return set_param_data(ap,0 ,0,0,"" );
  116. case(FREEZE): return set_param_data(ap,FREEZE_DATA ,0,0,"" );
  117. case(FREEZE2): return set_param_data(ap,FREEZE2_DATA ,0,0,"" );
  118. case(FREQUENCY):return set_param_data(ap,0 ,1,1,"i" );
  119. case(GAIN): return set_param_data(ap,0 ,1,1,"D" );
  120. case(GLIDE): return set_param_data(ap,0 ,1,1,"d" );
  121. case(GLIS):
  122. switch(mode) {
  123. case(SHEPARD):
  124. case(SELFGLIS):
  125. return set_param_data(ap,0 ,2,1,"D0" );
  126. case(INHARMONIC):
  127. return set_param_data(ap,0 ,2,2,"Dd" );
  128. }
  129. break;
  130. case(GRAB): return set_param_data(ap,0 ,1,1,"d" );
  131. case(GREQ):
  132. switch(mode) {
  133. case(GR_ONEBAND):
  134. return set_param_data(ap,FILTER_FRQS ,0,0,"" );
  135. case(GR_MULTIBAND):
  136. return set_param_data(ap,FILTER_BWS_AND_FRQS ,0,0,"" );
  137. }
  138. break;
  139. case(INVERT): return set_param_data(ap,0 ,0,0,"" );
  140. case(LEAF): return set_param_data(ap,0 ,1,1,"i" );
  141. case(LEVEL): return set_param_data(ap,0 ,0,0,"" );
  142. case(MAGNIFY): return set_param_data(ap,0 ,2,2,"dd" );
  143. case(MAKE): return set_param_data(ap,0 ,0,0,"" );
  144. case(MAX): return set_param_data(ap,0 ,0,0,"" );
  145. case(MEAN): return set_param_data(ap,0 ,0,0,"" );
  146. case(MORPH): return set_param_data(ap,0 ,6,6,"dddddd");
  147. case(NOISE): return set_param_data(ap,0 ,1,1,"D" );
  148. case(OCT):
  149. switch(mode) {
  150. case(OCT_UP):
  151. case(OCT_DN):
  152. return set_param_data(ap,0 ,2,1,"i0" );
  153. case(OCT_DN_BASS):
  154. return set_param_data(ap,0 ,2,2,"iD" );
  155. }
  156. break;
  157. case(OCTVU): return set_param_data(ap,0 ,1,1,"d" );
  158. case(P_APPROX): return set_param_data(ap,0 ,0,0,"" );
  159. case(P_CUT):
  160. switch(mode) {
  161. case(PCUT_START_ONLY):
  162. return set_param_data(ap,0 ,2,1,"D0" );
  163. case(PCUT_END_ONLY):
  164. return set_param_data(ap,0 ,2,1,"0D" );
  165. case(PCUT_BOTH):
  166. return set_param_data(ap,0 ,2,2,"DD" );
  167. }
  168. break;
  169. case(P_EXAG):
  170. switch(mode) {
  171. case(RANGE_ONLY_TO_P):
  172. case(RANGE_ONLY_TO_T):
  173. return set_param_data(ap,0 ,3,2,"DD0" );
  174. case(CONTOUR_ONLY_TO_P):
  175. case(CONTOUR_ONLY_TO_T):
  176. return set_param_data(ap,0 ,3,2,"D0D" );
  177. case(R_AND_C_TO_P):
  178. case(R_AND_C_TO_T):
  179. return set_param_data(ap,0 ,3,3,"DDD" );
  180. }
  181. break;
  182. case(P_FIX): return set_param_data(ap,0 ,0,0,"" );
  183. case(P_HEAR): return set_param_data(ap,0 ,0,0,"" );
  184. case(P_INFO): return set_param_data(ap,0 ,0,0,"" );
  185. case(P_INVERT): return set_param_data(ap,INTERVAL_MAPPING ,0,0,"" );
  186. case(P_QUANTISE): return set_param_data(ap,PITCHQUANTISE_SET ,0,0,"" );
  187. case(P_RANDOMISE): return set_param_data(ap,0 ,2,2,"DD" );
  188. case(P_SEE):
  189. switch(mode) {
  190. case(SEE_PITCH):
  191. return set_param_data(ap,0 ,1,1,"d" );
  192. case(SEE_TRANSPOS):
  193. return set_param_data(ap,0 ,1,0,"0" );
  194. }
  195. break;
  196. case(P_SMOOTH): return set_param_data(ap,0 ,1,1,"D" );
  197. //TW NEW
  198. case(P_SYNTH): return set_param_data(ap,PITCH_SPECTRUM ,0,0,"" );
  199. case(P_VOWELS): return set_param_data(ap,PITCH_VOWELS ,5,5,"dddDD" );
  200. case(VFILT): return set_param_data(ap,PITCH_VOWELS ,4,4,"dddd" );
  201. case(P_GEN): return set_param_data(ap,PITCH_CREATE ,1,1,"i" );
  202. case(P_INSERT): return set_param_data(ap,ZERO_INSERTTIMES ,0,0,"" );
  203. case(P_SINSERT): return set_param_data(ap,ZERO_INSERTTIMES ,0,0,"" );
  204. case(P_PTOSIL): return set_param_data(ap,0 ,0,0,"" );
  205. case(P_NTOSIL): return set_param_data(ap,0 ,0,0,"" );
  206. case(ANALENV): return set_param_data(ap,0 ,0,0,"" );
  207. case(P_BINTOBRK): return set_param_data(ap,0 ,0,0,"" );
  208. case(MAKE2): return set_param_data(ap,0 ,0,0,"" );
  209. case(P_INTERP): return set_param_data(ap,0 ,0,0,"" );
  210. case(P_TRANSPOSE): return set_param_data(ap,0 ,1,1,"d" );
  211. case(P_VIBRATO): return set_param_data(ap,0 ,2,2,"DD" );
  212. case(P_WRITE): return set_param_data(ap,0 ,0,0,"" );
  213. case(P_ZEROS): return set_param_data(ap,0 ,0,0,"" );
  214. case(PEAK): return set_param_data(ap,0 ,0,0,"" );
  215. case(PICK):
  216. switch(mode) {
  217. case(PIK_HARMS):
  218. case(PIK_OCTS):
  219. case(PIK_ODD_HARMS):
  220. return set_param_data(ap,0 ,2,1,"d0" );
  221. case(PIK_LINEAR):
  222. case(PIK_DISPLACED_HARMS):
  223. return set_param_data(ap,0 ,2,2,"dd" );
  224. }
  225. break;
  226. case(PITCH):
  227. if(!sloom) {
  228. switch(mode) {
  229. case(PICH_TO_BIN):
  230. return set_param_data(ap,OUT_PFILE ,0,0,"" );
  231. case(PICH_TO_BRK):
  232. return set_param_data(ap,OUT_PBRKFILE ,0,0,"" );
  233. }
  234. } else {
  235. return set_param_data(ap,0 ,0,0,"" );
  236. }
  237. break;
  238. case(PLUCK): return set_param_data(ap,0 ,1,1,"D" );
  239. case(PRINT): return set_param_data(ap,0 ,1,1,"d" );
  240. case(REPITCH): return set_param_data(ap,0 ,0,0,"" );
  241. case(REPITCHB): return set_param_data(ap,0 ,0,0,"" );
  242. case(REPORT): return set_param_data(ap,0 ,1,1,"i" );
  243. case(SCAT): return set_param_data(ap,0 ,1,1,"I" );
  244. case(SHIFT):
  245. switch(mode) {
  246. case(SHIFT_ALL):
  247. return set_param_data(ap,0 ,3,1,"D00" );
  248. case(SHIFT_ABOVE):
  249. case(SHIFT_BELOW):
  250. return set_param_data(ap,0 ,3,2,"DD0" );
  251. case(SHIFT_BETWEEN):
  252. case(SHIFT_OUTSIDE):
  253. return set_param_data(ap,0 ,3,3,"DDD" );
  254. }
  255. break;
  256. case(SHIFTP):
  257. switch(mode) {
  258. case(P_OCT_UP):
  259. case(P_OCT_DN):
  260. case(P_OCT_UP_AND_DN):
  261. return set_param_data(ap,0 ,3,1,"D00" );
  262. case(P_SHFT_UP):
  263. case(P_SHFT_DN):
  264. return set_param_data(ap,0 ,3,2,"DD0" );
  265. case(P_SHFT_UP_AND_DN):
  266. return set_param_data(ap,0 ,3,3,"DDD" );
  267. }
  268. break;
  269. case(SHUFFLE): return set_param_data(ap,SHUFFLE_DATA ,1,1,"i" );
  270. case(SPLIT): return set_param_data(ap,SPECSPLI_DATA ,0,0,"" );
  271. case(SPREAD): return set_param_data(ap,0 ,0,0,"" );
  272. case(STEP): return set_param_data(ap,0 ,1,1,"d" );
  273. case(STRETCH): return set_param_data(ap,0 ,3,3,"ddd" );
  274. case(SUM): return set_param_data(ap,0 ,0,0,"" );
  275. case(SUPR): return set_param_data(ap,0 ,1,1,"I" );
  276. case(S_TRACE):
  277. switch(mode) {
  278. case(TRC_ALL):
  279. return set_param_data(ap,0 ,3,1,"I00" );
  280. case(TRC_ABOVE):
  281. return set_param_data(ap,0 ,3,2,"ID0" );
  282. case(TRC_BELOW):
  283. return set_param_data(ap,0 ,3,2,"I0D" );
  284. case(TRC_BETWEEN):
  285. return set_param_data(ap,0 ,3,3,"IDD" );
  286. }
  287. break;
  288. case(TRACK):
  289. switch(mode) {
  290. case(TRK_TO_BIN):
  291. return set_param_data(ap,OUT_PFILE ,1,1,"d" );
  292. case(TRK_TO_BRK):
  293. return set_param_data(ap,OUT_PBRKFILE ,1,1,"d" );
  294. }
  295. break;
  296. case(TRNSF):
  297. switch(mode) {
  298. case(TRNS_RATIO):
  299. return set_param_data(ap,TRANSPOS_RATIO_OR_CONSTANT ,0,0,"" );
  300. case(TRNS_OCT):
  301. return set_param_data(ap,TRANSPOS_OCTAVE_OR_CONSTANT,0,0,"" );
  302. case(TRNS_SEMIT):
  303. return set_param_data(ap,TRANSPOS_SEMIT_OR_CONSTANT ,0,0,"" );
  304. case(TRNS_BIN):
  305. return set_param_data(ap,0 ,0,0,"" );
  306. }
  307. break;
  308. case(TRNSP):
  309. switch(mode) {
  310. case(TRNS_RATIO):
  311. return set_param_data(ap,TRANSPOS_RATIO_OR_CONSTANT ,0,0,"" );
  312. case(TRNS_OCT):
  313. return set_param_data(ap,TRANSPOS_OCTAVE_OR_CONSTANT,0,0,"" );
  314. case(TRNS_SEMIT):
  315. return set_param_data(ap,TRANSPOS_SEMIT_OR_CONSTANT ,0,0,"" );
  316. case(TRNS_BIN):
  317. return set_param_data(ap,0 ,0,0,"" );
  318. }
  319. break;
  320. case(TSTRETCH): return set_param_data(ap,0 ,1,1,"D" );
  321. case(TUNE):
  322. switch(mode) {
  323. case(TUNE_FRQ):
  324. return set_param_data(ap,FRQ_OR_FRQSET ,0,0,"" );
  325. case(TUNE_MIDI):
  326. return set_param_data(ap,PITCH_OR_PITCHSET ,0,0,"" );
  327. }
  328. break;
  329. case(VOCODE): return set_param_data(ap,0 ,0,0,"" );
  330. case(WARP): return set_param_data(ap,0 ,0,0,"" );
  331. case(WAVER):
  332. switch(mode) {
  333. case(WAVER_STANDARD):
  334. return set_param_data(ap,0 ,4,3,"DDd0" );
  335. case(WAVER_SPECIFIED):
  336. return set_param_data(ap,0 ,4,4,"DDdd" );
  337. }
  338. break;
  339. case(WEAVE): return set_param_data(ap,WEAVE_DATA ,0,0,"" );
  340. case(WINDOWCNT):return set_param_data(ap,0 ,0,0,"" );
  341. case(LIMIT): return set_param_data(ap,0 ,1,1,"D" );
  342. case(MULTRANS): return set_param_data(ap,SEMIT_TRANSPOS_SET ,0,0,"" );
  343. /* | |m| | | */
  344. /* | |a| | | */
  345. /* | |x| | | */
  346. /* | |p|p| | */
  347. /* | |a|a| | */
  348. /******** GROUCHO ********/ /* | special-data |r|r| param | */
  349. /* | |a|a| list | */
  350. /* | |m|m| | */
  351. /* | |c|c| | */
  352. /* | |n|n| | */
  353. /* | |t|t| | */
  354. case(DISTORT):
  355. switch(mode) {
  356. case(DISTORT_EXAGG):
  357. return set_param_data(ap,0 ,1,1,"D" );
  358. default: return set_param_data(ap,0 ,1,0,"0" );
  359. }
  360. break;
  361. case(DISTORT_ENV):
  362. switch(mode) {
  363. case(DISTORTE_USERDEF): /* 1 param + 0 variants: 2 INACTIVEs force internalparams to start at param[3] */
  364. return set_param_data(ap,DISTORT_ENVELOPE ,3,1,"I00" );
  365. case(DISTORTE_TROFFED): /* 2 params + 1 variant trof = param[1]: internals start at param[3] */
  366. return set_param_data(ap,0 ,2,2,"ID" );
  367. /* 1 param + 2 variants trof = param[1]: internals start at param[3] */
  368. default: return set_param_data(ap,0 ,1,1,"I" );
  369. }
  370. break;
  371. case(DISTORT_AVG): return set_param_data(ap,0 ,1,1,"I" );
  372. case(DISTORT_OMT): return set_param_data(ap,0 ,2,2,"Ii" );
  373. case(DISTORT_MLT): return set_param_data(ap,0 ,1,1,"I" );
  374. case(DISTORT_DIV): return set_param_data(ap,0 ,1,1,"I" );
  375. case(DISTORT_HRM): return set_param_data(ap,HARMONIC_DISTORT ,0,0,"" );
  376. case(DISTORT_FRC): return set_param_data(ap,0 ,2,2,"ID" );
  377. case(DISTORT_REV): return set_param_data(ap,0 ,1,1,"I" );
  378. case(DISTORT_SHUF):return set_param_data(ap,SHUFFLE_DATA ,0,0,"" );
  379. case(DISTORT_RPTFL):
  380. case(DISTORT_RPT2):
  381. case(DISTORT_RPT): return set_param_data(ap,0 ,1,1,"I" );
  382. case(DISTORT_INTP):return set_param_data(ap,0 ,1,1,"I" );
  383. case(DISTORT_DEL): return set_param_data(ap,0 ,1,1,"I" );
  384. case(DISTORT_RPL): return set_param_data(ap,0 ,1,1,"I" );
  385. case(DISTORT_TEL): return set_param_data(ap,0 ,1,1,"I" );
  386. case(DISTORT_FLT):
  387. switch(mode) {
  388. case(DISTFLT_HIPASS):
  389. return set_param_data(ap,0 ,2,1,"D0" );
  390. case(DISTFLT_LOPASS):
  391. return set_param_data(ap,0 ,2,1,"0D" );
  392. case(DISTFLT_BANDPASS):
  393. return set_param_data(ap,0 ,2,2,"DD" );
  394. }
  395. break;
  396. case(DISTORT_INT): return set_param_data(ap,0 ,0,0,"" );
  397. case(DISTORT_CYCLECNT):
  398. return set_param_data(ap,0 ,0,0,"" );
  399. case(DISTORT_PCH): return set_param_data(ap,0 ,1,1,"D" );
  400. case(DISTORT_OVERLOAD):
  401. switch(mode) {
  402. case(OVER_NOISE):
  403. return set_param_data(ap,0 ,3,2,"DD0" );
  404. case(OVER_SINE):
  405. return set_param_data(ap,0 ,3,3,"DDD" );
  406. }
  407. break;
  408. case(DISTORT_PULSED):
  409. switch(mode) {
  410. case(PULSE_IMP): return set_param_data(ap,PULSE_ENVELOPE ,9,8,"ddDddd0Dd");
  411. case(PULSE_SYN): return set_param_data(ap,PULSE_ENVELOPE ,9,9,"ddDddddDd");
  412. case(PULSE_SYNI): return set_param_data(ap,PULSE_ENVELOPE ,9,9,"idDdddiDd");
  413. }
  414. break;
  415. case(ZIGZAG):
  416. switch(mode) {
  417. case(ZIGZAG_SELF):
  418. return set_param_data(ap,0 ,4,4,"dddd" );
  419. case(ZIGZAG_USER):
  420. return set_param_data(ap,ZIGDATA ,4,0,"0000" );
  421. default:
  422. sprintf(errstr,"Unknown mode (%d) : ZIGZAG: set_legal_param_structure()\n",mode);
  423. return(PROGRAM_ERROR);
  424. }
  425. break;
  426. case(LOOP):
  427. switch(mode) {
  428. case(LOOP_ALL):
  429. return set_param_data(ap,0 ,5,3,"00ddd");
  430. case(LOOP_OUTLEN):
  431. return set_param_data(ap,0 ,4,3,"d0dd" );
  432. case(LOOP_RPTS):
  433. return set_param_data(ap,0 ,4,3,"0idd" );
  434. default:
  435. sprintf(errstr,"Unknown mode (%d) : LOOP: set_legal_param_structure()\n",mode);
  436. return(PROGRAM_ERROR);
  437. }
  438. break;
  439. case(SCRAMBLE): return set_param_data(ap,0 ,3,3,"ddd" );
  440. case(ITERATE):
  441. switch(mode) {
  442. case(ITERATE_DUR):
  443. return set_param_data(ap,0 ,1,1,"d" );
  444. case(ITERATE_REPEATS):
  445. return set_param_data(ap,0 ,1,1,"i" );
  446. default:
  447. sprintf(errstr,"Unknown mode (%d) : ITERATE: set_legal_param_structure()\n",mode);
  448. return(PROGRAM_ERROR);
  449. }
  450. break;
  451. case(ITERATE_EXTEND):
  452. switch(mode) {
  453. case(ITERATE_DUR):
  454. return set_param_data(ap,0 ,8,8,"dDDDDddd" );
  455. case(ITERATE_REPEATS):
  456. return set_param_data(ap,0 ,8,8,"iDDDDddd" );
  457. default:
  458. sprintf(errstr,"Unknown mode (%d) : ITERATE_EXTEND: set_legal_param_structure()\n",mode);
  459. return(PROGRAM_ERROR);
  460. }
  461. break;
  462. case(DRUNKWALK):
  463. switch(mode) {
  464. case(TOTALLY_PISSED):
  465. return set_param_data(ap,0 ,7,5,"dDDDD00");
  466. case(HAS_SOBER_MOMENTS):
  467. return set_param_data(ap,0 ,7,7,"dDDDDII");
  468. default:
  469. sprintf(errstr,"Unknown mode (%d) : DRUNKWALK: set_legal_param_structure()\n",mode);
  470. return(PROGRAM_ERROR);
  471. }
  472. break;
  473. case(SIMPLE_TEX): return set_param_data(ap,TEX_NOTEDATA ,26,13,"dDDDIIDDDDDDI0000000000000");
  474. case(GROUPS): return set_param_data(ap,TEX_NOTEDATA ,26,23,"dDDDIIDDDDDDDiDDiIIDDDD000");
  475. case(ORNATE): case(PREORNATE): case(POSTORNATE):
  476. return set_param_data(ap,TEX_NOTEDATA ,26,15,"dD00IIDDDD00DiDDi000000DD0");
  477. case(MOTIFS): case(MOTIFSIN):
  478. return set_param_data(ap,TEX_NOTEDATA ,26,17,"dDDDIIDD00DDDiDDi000000DD0");
  479. case(DECORATED): case(PREDECOR): case(POSTDECOR):
  480. return set_param_data(ap,TEX_NOTEDATA ,26,20,"dD00IIDDDD00DiDDiIIDDDD00i");
  481. case(TIMED): return set_param_data(ap,TEX_NOTEDATA ,26,10,"dD00IIDDDDDD00000000000000");
  482. case(TGROUPS): return set_param_data(ap,TEX_NOTEDATA ,26,21,"dD00IIDDDDDDDiDDiIIDDDD000");
  483. case(TMOTIFS): case(TMOTIFSIN):
  484. return set_param_data(ap,TEX_NOTEDATA ,26,15,"dD00IIDD00DDDiDDi000000DD0");
  485. case(GRAIN_COUNT): return set_param_data(ap,0 ,2,0,"00" );
  486. case(GRAIN_OMIT): return set_param_data(ap,0 ,2,2,"Ii" );
  487. case(GRAIN_DUPLICATE): return set_param_data(ap,0 ,2,1,"I0" );
  488. case(GRAIN_REORDER): return set_param_data(ap,GRAIN_REORDER_STRING ,2,0,"00" );
  489. case(GRAIN_REPITCH): return set_param_data(ap,GRAIN_PITCH_RATIOS ,2,0,"00" );
  490. case(GRAIN_RERHYTHM): return set_param_data(ap,GRAIN_TIME_RATIOS ,2,0,"00" );
  491. case(GRAIN_REMOTIF): return set_param_data(ap,GRAIN_TWO_RATIOS ,2,0,"00" );
  492. case(GRAIN_TIMEWARP): return set_param_data(ap,0 ,2,1,"D0" );
  493. case(GRAIN_REVERSE): return set_param_data(ap,0 ,2,0,"00" );
  494. case(GRAIN_GET): return set_param_data(ap,0 ,2,0,"00" );
  495. case(GRAIN_POSITION): return set_param_data(ap,GRAIN_TIMINGS ,2,1,"d0" );
  496. case(GRAIN_ALIGN): return set_param_data(ap,0 ,2,2,"dD" );
  497. case(ENV_CREATE):
  498. switch(mode) {
  499. case(ENV_ENVFILE_OUT): return set_param_data(ap,ENV_CREATEFILE ,4,1,"d000" );
  500. case(ENV_BRKFILE_OUT): return set_param_data(ap,ENV_CREATEFILE ,4,0,"0000" );
  501. default:
  502. sprintf(errstr,"Unknown mode (%d) for ENV_CREATE in set_legal_param_structure()\n",mode);
  503. return (PROGRAM_ERROR);
  504. }
  505. break;
  506. case(ENV_EXTRACT): return set_param_data(ap,0 ,4,1,"d000" );
  507. case(ENV_WARPING):
  508. case(ENV_REPLOTTING):
  509. switch(mode) {
  510. case(ENV_NORMALISE):
  511. case(ENV_REVERSE):
  512. case(ENV_CEILING):
  513. return set_param_data(ap,0 ,4,1,"d000" );
  514. case(ENV_EXAGGERATING):
  515. case(ENV_ATTENUATING):
  516. case(ENV_LIFTING): return set_param_data(ap,0 ,4,2,"dD00" );
  517. case(ENV_DUCKED):
  518. case(ENV_INVERTING):
  519. case(ENV_LIMITING):return set_param_data(ap,0 ,4,3,"dDD0" );
  520. case(ENV_TSTRETCHING): return set_param_data(ap,0 ,4,2,"dd00" );
  521. case(ENV_FLATTENING): return set_param_data(ap,0 ,4,2,"dI00" );
  522. case(ENV_GATING): return set_param_data(ap,0 ,4,3,"dD0i" );
  523. case(ENV_CORRUGATING): return set_param_data(ap,0 ,4,3,"dII0" );
  524. case(ENV_EXPANDING): return set_param_data(ap,0 ,4,4,"dDDi" );
  525. case(ENV_TRIGGERING): return set_param_data(ap,ENV_TRIGGER_RAMP ,4,4,"dDdd" );
  526. case(ENV_PEAKCNT): return set_param_data(ap,0 ,4,2,"d0I0" );
  527. default:
  528. sprintf(errstr,"Unknown mode (%d) for ENV_WARPING or REPLOTTING in set_legal_param_structure()\n",mode);
  529. return(PROGRAM_ERROR);
  530. }
  531. break;
  532. case(ENV_RESHAPING):
  533. switch(mode) {
  534. case(ENV_NORMALISE):
  535. case(ENV_REVERSE):
  536. case(ENV_CEILING):
  537. return set_param_data(ap,0 ,4,0,"0000" );
  538. case(ENV_EXAGGERATING):
  539. case(ENV_ATTENUATING):
  540. case(ENV_LIFTING): return set_param_data(ap,0 ,4,1,"0D00" );
  541. case(ENV_DUCKED):
  542. case(ENV_INVERTING):
  543. case(ENV_LIMITING):return set_param_data(ap,0 ,4,2,"0DD0" );
  544. case(ENV_TSTRETCHING): return set_param_data(ap,0 ,4,1,"0d00" );
  545. case(ENV_FLATTENING): return set_param_data(ap,0 ,4,1,"0I00" );
  546. case(ENV_GATING): return set_param_data(ap,0 ,4,2,"0D0i" );
  547. case(ENV_CORRUGATING): return set_param_data(ap,0 ,4,2,"0II0" );
  548. case(ENV_EXPANDING): return set_param_data(ap,0 ,4,3,"0DDi" );
  549. case(ENV_TRIGGERING): return set_param_data(ap,ENV_TRIGGER_RAMP ,4,3,"0Ddd" );
  550. case(ENV_PEAKCNT): return set_param_data(ap,0 ,4,1,"00I0" );
  551. default:
  552. sprintf(errstr,"Unknown mode (%d) for ENV_RESHAPING in set_legal_param_structure()\n",mode);
  553. return(PROGRAM_ERROR);
  554. }
  555. break;
  556. //TW NEW
  557. case(ENV_PROPOR): return set_param_data(ap,0 ,4,0,"0000" ); break;
  558. case(ENV_IMPOSE):
  559. switch(mode) {
  560. case(ENV_ENVFILE_IN):
  561. case(ENV_DB_BRKFILE_IN):
  562. case(ENV_BRKFILE_IN): return set_param_data(ap,0 ,4,0,"0000" );
  563. case(ENV_SNDFILE_IN): return set_param_data(ap,0 ,4,1,"d000" );
  564. default:
  565. sprintf(errstr,"Unknown mode (%d) for ENV_IMPOSE in set_legal_param_structure()\n",mode);
  566. return(PROGRAM_ERROR);
  567. }
  568. break;
  569. case(ENV_REPLACE):
  570. switch(mode) {
  571. case(ENV_ENVFILE_IN): return set_param_data(ap,0 ,4,0,"0000" );
  572. case(ENV_BRKFILE_IN):
  573. case(ENV_DB_BRKFILE_IN):
  574. case(ENV_SNDFILE_IN): return set_param_data(ap,0 ,4,1,"d000" );
  575. default:
  576. sprintf(errstr,"Unknown mode (%d) for ENV_REPLACE in set_legal_param_structure()\n",mode);
  577. return(PROGRAM_ERROR);
  578. }
  579. break;
  580. case(ENV_DOVETAILING):
  581. switch(mode) {
  582. case(DOVE): return set_param_data(ap,0 ,4,4,"ddii" );
  583. case(DOVEDBL): return set_param_data(ap,0 ,4,2,"dd00" );
  584. }
  585. break;
  586. case(ENV_SWELL): return set_param_data(ap,0 ,4,2,"d0i0" );
  587. case(ENV_ATTACK):
  588. switch(mode) {
  589. case(ENV_ATK_GATED): return set_param_data(ap,0 ,4,4,"dddd" );
  590. case(ENV_ATK_TIMED): return set_param_data(ap,0 ,4,4,"dddd" );
  591. case(ENV_ATK_XTIME): return set_param_data(ap,0 ,4,4,"dddd" );
  592. case(ENV_ATK_ATMAX): return set_param_data(ap,0 ,4,3,"0ddd" );
  593. default:
  594. sprintf(errstr,"Unknown mode (%d) for ENV_ATTACK in set_legal_param_structure()\n",mode);
  595. return(PROGRAM_ERROR);
  596. }
  597. break;
  598. case(ENV_CURTAILING):
  599. switch(mode) {
  600. case(ENV_START_AND_END):
  601. case(ENV_START_AND_DUR): return set_param_data(ap,0 ,4,3,"ddi0" );
  602. case(ENV_START_ONLY): return set_param_data(ap,0 ,4,2,"d0i0" );
  603. case(ENV_START_AND_END_D):
  604. case(ENV_START_AND_DUR_D): return set_param_data(ap,0 ,4,2,"dd00" );
  605. case(ENV_START_ONLY_D): return set_param_data(ap,0 ,4,1,"d000" );
  606. default:
  607. sprintf(errstr,"Unknown mode (%d) for ENV_CURTAILING in set_legal_param_structure()\n",mode);
  608. return(PROGRAM_ERROR);
  609. }
  610. break;
  611. case(ENV_ENVTOBRK): return set_param_data(ap,0 ,4,0,"0000" );
  612. case(ENV_ENVTODBBRK): return set_param_data(ap,0 ,4,0,"0000" );
  613. case(ENV_BRKTOENV): return set_param_data(ap,0 ,4,1,"d000" );
  614. case(ENV_DBBRKTOENV): return set_param_data(ap,0 ,4,1,"d000" );
  615. case(ENV_DBBRKTOBRK): return set_param_data(ap,0 ,4,0,"0000" );
  616. case(ENV_BRKTODBBRK): return set_param_data(ap,0 ,4,0,"0000" );
  617. case(ENV_PLUCK): return set_param_data(ap,0 ,4,2,"ii00" );
  618. case(ENV_TREMOL): return set_param_data(ap,0 ,4,3,"DDD0" );
  619. case(MIX): return set_param_data(ap,0 ,0,0,"" );
  620. case(MIXTWO): return set_param_data(ap,0 ,0,0,"" );
  621. //TW NEW
  622. case(MIXMANY): return set_param_data(ap,0 ,0,0,"" );
  623. case(MIXBALANCE): return set_param_data(ap,0 ,0,0,"" );
  624. case(MIXCROSS): return set_param_data(ap,0 ,0,0,"" );
  625. case(MIXINTERL): return set_param_data(ap,0 ,0,0,"" );
  626. case(MIXINBETWEEN):
  627. switch(mode) {
  628. case(INBI_COUNT): return set_param_data(ap,0 ,1,1,"i" );
  629. case(INBI_RATIO): return set_param_data(ap,INBTWN_RATIOS ,1,0,"0" );
  630. default:
  631. sprintf(errstr,"Unknown mode (%d) for MIXINBETWEEN in set_legal_param_structure()\n",mode);
  632. return(PROGRAM_ERROR);
  633. }
  634. break;
  635. case(MIXTEST): return set_param_data(ap,0 ,0,0,"" );
  636. case(MIXMAX): return set_param_data(ap,0 ,0,0,"" );
  637. case(MIXFORMAT): return set_param_data(ap,0 ,0,0,"" );
  638. case(MIXDUMMY): return set_param_data(ap,0 ,0,0,"" );
  639. case(MIXSYNC): return set_param_data(ap,0 ,0,0,"" );
  640. case(MIXSYNCATT): return set_param_data(ap,0 ,0,0,"" );
  641. case(MIXGAIN): return set_param_data(ap,0 ,2,1,"d0" );
  642. case(MIXTWARP):
  643. switch(mode) {
  644. case(MTW_REVERSE_T): case(MTW_REVERSE_NT):
  645. case(MTW_FREEZE_T): case(MTW_FREEZE_NT): case(MTW_TIMESORT):
  646. return set_param_data(ap,0 ,2,0,"00" );
  647. case(MTW_DOMINO): case(MTW_ADD_TO_TG): case(MTW_SCATTER):
  648. case(MTW_CREATE_TG_1): case(MTW_CREATE_TG_2): case(MTW_CREATE_TG_3): case(MTW_CREATE_TG_4):
  649. case(MTW_ENLARGE_TG_1): case(MTW_ENLARGE_TG_2): case(MTW_ENLARGE_TG_3): case(MTW_ENLARGE_TG_4):
  650. return set_param_data(ap,0 ,2,1,"d0" );
  651. default:
  652. sprintf(errstr,"Unknown mode (%d) for MIXTWARP in set_legal_param_structure()\n",mode);
  653. return(PROGRAM_ERROR);
  654. }
  655. break;
  656. case(MIXSWARP):
  657. switch(mode) {
  658. case(MSW_TWISTALL):return set_param_data(ap,0 ,2,0,"00" );
  659. case(MSW_TWISTONE):return set_param_data(ap,0 ,2,1,"i0" );
  660. case(MSW_FIXED):
  661. case(MSW_NARROWED):return set_param_data(ap,0 ,2,1,"d0" );
  662. case(MSW_LEFTWARDS):
  663. case(MSW_RIGHTWARDS):
  664. case(MSW_RANDOM):
  665. case(MSW_RANDOM_ALT):
  666. return set_param_data(ap,0 ,2,2,"dd" );
  667. default:
  668. sprintf(errstr,"Unknown mode (%d) for MIXSWARP in set_legal_param_structure()\n",mode);
  669. return(PROGRAM_ERROR);
  670. }
  671. break;
  672. case(MIXSHUFL):
  673. switch(mode) {
  674. case(MSH_DUPLICATE):
  675. case(MSH_REVERSE_N):
  676. case(MSH_SCATTER):
  677. case(MSH_FIXED_N):
  678. case(MSH_OMIT):
  679. case(MSH_OMIT_ALT):
  680. return set_param_data(ap,0 ,2,0,"00" );
  681. case(MSH_DUPL_AND_RENAME):
  682. return set_param_data(ap,SNDFILENAME ,2,0,"00" );
  683. default:
  684. sprintf(errstr,"Unknown mode (%d) for MIXSHUFL in set_legal_param_structure()\n",mode);
  685. return(PROGRAM_ERROR);
  686. }
  687. break;
  688. case(EQ):
  689. switch(mode) {
  690. case(FLT_LOSHELF):
  691. case(FLT_HISHELF): return set_param_data(ap,0 ,5,2,"0dd00" );
  692. case(FLT_PEAKING): return set_param_data(ap,0 ,5,3,"ddd00" );
  693. default:
  694. sprintf(errstr,"Unknown mode (%d) for EQ in set_legal_param_structure()\n",mode);
  695. return(PROGRAM_ERROR);
  696. }
  697. break;
  698. case(LPHP): return set_param_data(ap,0 ,5,3,"0ddd0" );
  699. case(FSTATVAR): return set_param_data(ap,0 ,5,3,"DdD00" );
  700. case(FLTBANKN):
  701. switch(mode) {
  702. case(FLT_HARMONIC):
  703. case(FLT_ALTERNATE):
  704. case(FLT_SUBHARM): return set_param_data(ap,0 ,5,4,"Dddd0" );
  705. case(FLT_EQUALSPAN):return set_param_data(ap,0 ,5,5,"Ddddi" );
  706. case(FLT_LINOFFSET):return set_param_data(ap,0 ,5,5,"Ddddd" );
  707. case(FLT_EQUALINT):return set_param_data(ap,0 ,5,5,"Ddddd" );
  708. default:
  709. sprintf(errstr,"Unknown mode (%d) for FLTBANKN in set_legal_param_structure()\n",mode);
  710. return(PROGRAM_ERROR);
  711. }
  712. break;
  713. case(FLTBANKC):
  714. switch(mode) {
  715. case(FLT_HARMONIC):
  716. case(FLT_ALTERNATE):
  717. case(FLT_SUBHARM): return set_param_data(ap,0 ,6,2,"00dd00" );
  718. case(FLT_EQUALSPAN):return set_param_data(ap,0 ,6,3,"00ddi0" );
  719. case(FLT_LINOFFSET):return set_param_data(ap,0 ,6,3,"00ddd0" );
  720. case(FLT_EQUALINT):return set_param_data(ap,0 ,6,3,"00ddd0" );
  721. default:
  722. sprintf(errstr,"Unknown mode (%d) for FLTBANKC in set_legal_param_structure()\n",mode);
  723. return(PROGRAM_ERROR);
  724. }
  725. break;
  726. case(FLTBANKU): return set_param_data(ap,FILTERBANK ,5,2,"Dd000" );
  727. case(FLTBANKV): return set_param_data(ap,TIMEVARYING_FILTERBANK,3,2,"Dd0" );
  728. case(FLTBANKV2): return set_param_data(ap,TIMEVARY2_FILTERBANK ,3,2,"Dd0" );
  729. case(FLTITER): return set_param_data(ap,FILTERBANK ,6,4,"dddd00" );
  730. case(FLTSWEEP): return set_param_data(ap,0 ,5,5,"DdDDD" );
  731. case(ALLPASS): return set_param_data(ap,0 ,5,2,"0dD00" );
  732. case(MOD_LOUDNESS):
  733. switch(mode) {
  734. // case(LOUDNESS_GAIN): return set_param_data(ap,0 ,2,1, "d0");
  735. case(LOUDNESS_GAIN): return set_param_data(ap,0 ,2,1, "D0");
  736. // case(LOUDNESS_DBGAIN): return set_param_data(ap,0 ,2,1, "d0");
  737. case(LOUDNESS_DBGAIN): return set_param_data(ap,0 ,2,1, "D0");
  738. case(LOUDNESS_NORM): return set_param_data(ap,0 ,1,0, "0");
  739. case(LOUDNESS_SET): return set_param_data(ap,0 ,1,0, "0");
  740. case(LOUDNESS_BALANCE): return set_param_data(ap,0 ,2,0, "00");
  741. case(LOUDNESS_PHASE): return set_param_data(ap,0 ,0,0, "");
  742. case(LOUDNESS_LOUDEST): return set_param_data(ap,0 ,2,0, "00");
  743. case(LOUDNESS_EQUALISE): return set_param_data(ap,0 ,2,0, "00");
  744. case(LOUD_PROPOR): return set_param_data(ap,LOUDNESS ,2,0, "00");
  745. case(LOUD_DB_PROPOR): return set_param_data(ap,LOUDNESS ,2,0, "00");
  746. default:
  747. sprintf(errstr,"Unknown mode (%d) for MOD_LOUDNESS in set_legal_param_structure()\n",mode);
  748. return(PROGRAM_ERROR);
  749. }
  750. break;
  751. case(MOD_SPACE):
  752. switch(mode) {
  753. case(MOD_PAN): return set_param_data(ap,0 ,1,1, "D");
  754. case(MOD_MIRROR): return set_param_data(ap,0 ,2,0, "00");
  755. case(MOD_MIRRORPAN): return set_param_data(ap,0 ,2,0, "00");
  756. case(MOD_NARROW): return set_param_data(ap,0 ,2,1, "d0");
  757. default:
  758. sprintf(errstr,"Unknown mode (%d) for MOD_SPACE in set_legal_param_structure()\n",mode);
  759. return(PROGRAM_ERROR);
  760. }
  761. break;
  762. //TW NEW
  763. case(SCALED_PAN): return set_param_data(ap,0 ,1,1, "D");
  764. case(MOD_PITCH):
  765. switch(mode) {
  766. case(MOD_ACCEL): return set_param_data(ap,0 ,2,2, "dd");
  767. case(MOD_VIBRATO): return set_param_data(ap,0 ,2,2, "DD");
  768. default: return set_param_data(ap,0 ,1,1, "D");
  769. }
  770. break;
  771. case(MOD_REVECHO):
  772. switch(mode) {
  773. case(MOD_DELAY): return set_param_data(ap,0 ,8,4,"dDD0000d");
  774. case(MOD_VDELAY): return set_param_data(ap,0 ,8,8,"dddddddd");
  775. case(MOD_STADIUM): return set_param_data(ap,0 ,0,0,"");
  776. default:
  777. sprintf(errstr,"Unknown mode (%d) for MOD_REVECHO in set_legal_param_structure()\n",mode);
  778. return(PROGRAM_ERROR);
  779. }
  780. break;
  781. case(MOD_RADICAL):
  782. switch(mode) {
  783. case(MOD_REVERSE): return set_param_data(ap,0 ,0,0,"");
  784. case(MOD_SHRED): return set_param_data(ap,0 ,2,2,"id");
  785. case(MOD_SCRUB): return set_param_data(ap,0 ,1,1,"d");
  786. case(MOD_LOBIT): return set_param_data(ap,0 ,2,2,"ii");
  787. case(MOD_LOBIT2): return set_param_data(ap,0 ,2,1,"i0");
  788. case(MOD_RINGMOD): return set_param_data(ap,0 ,1,1,"D");
  789. case(MOD_CROSSMOD): return set_param_data(ap,0 ,0,0,"");
  790. default:
  791. sprintf(errstr,"Unknown mode (%d) for MOD_RADICAL in set_legal_param_structure()\n",mode);
  792. return(PROGRAM_ERROR);
  793. }
  794. break;
  795. case(BRASSAGE):
  796. switch(mode) {
  797. case(GRS_PITCHSHIFT): return set_param_data(ap,0 ,16,1, "00000D0000000000");
  798. case(GRS_TIMESTRETCH): return set_param_data(ap,0 ,16,1, "D000000000000000");
  799. case(GRS_REVERB): return set_param_data(ap,0 ,16,3, "0D000DD000000000");
  800. case(GRS_SCRAMBLE): return set_param_data(ap,0 ,16,1, "0000D00000000000");
  801. case(GRS_GRANULATE): return set_param_data(ap,0 ,16,1, "0D00000000000000");
  802. case(GRS_BRASSAGE): return set_param_data(ap,0 ,16,8, "DD00DDDDDD000000");
  803. case(GRS_FULL_MONTY): return set_param_data(ap,0 ,16,16,"DDDDDDDDDDDDDDDD");
  804. default:
  805. sprintf(errstr,"Unknown mode (%d) for BRASSAGE in set_legal_param_structure()\n",mode);
  806. return(PROGRAM_ERROR);
  807. }
  808. break;
  809. case(SAUSAGE): return set_param_data(ap,0 ,16,16,"DDDDDDDDDDDDDDDD");
  810. case(PVOC_ANAL): return set_param_data(ap,0 ,0,0,"" );
  811. case(PVOC_SYNTH): return set_param_data(ap,0 ,2,0,"00" );
  812. case(PVOC_EXTRACT): return set_param_data(ap,0 ,0,0,"" );
  813. /* TEMPORARY TEST ROUTINE */
  814. case(WORDCNT): return set_param_data(ap,0 ,0,0,"" );
  815. /* TEMPORARY TEST ROUTINE */
  816. case(EDIT_CUT):
  817. switch(mode) {
  818. case(EDIT_SECS): return set_param_data(ap,0 ,2,2,"dd" );
  819. case(EDIT_SAMPS):
  820. case(EDIT_STSAMPS):return set_param_data(ap,0 ,2,2,"ii" );
  821. default:
  822. sprintf(errstr,"Unknown mode (%d) for EDIT_CUT in set_legal_param_structure()\n",mode);
  823. return(PROGRAM_ERROR);
  824. }
  825. break;
  826. //TW NEW
  827. case(EDIT_CUTMANY): return set_param_data(ap,MANYCUTS ,1,1,"d" );
  828. case(STACK): return set_param_data(ap,STACKDATA ,5,5,"idddd" );
  829. case(EDIT_CUTEND):
  830. switch(mode) {
  831. case(EDIT_SECS): return set_param_data(ap,0 ,2,1,"d0" );
  832. case(EDIT_SAMPS):
  833. case(EDIT_STSAMPS):return set_param_data(ap,0 ,2,1,"i0" );
  834. default:
  835. sprintf(errstr,"Unknown mode (%d) for EDIT_CUTEND in set_legal_param_structure()\n",mode);
  836. return(PROGRAM_ERROR);
  837. }
  838. break;
  839. case(EDIT_ZCUT):
  840. switch(mode) {
  841. case(EDIT_SECS): return set_param_data(ap,0 ,2,2,"dd" );
  842. case(EDIT_SAMPS):
  843. case(EDIT_STSAMPS):return set_param_data(ap,0 ,2,2,"ii" );
  844. default:
  845. sprintf(errstr,"Unknown mode (%d) for EDIT_ZCUT in set_legal_param_structure()\n",mode);
  846. return(PROGRAM_ERROR);
  847. }
  848. break;
  849. case(MANY_ZCUTS): return set_param_data(ap,MANYCUTS ,0,0,"" );
  850. case(EDIT_EXCISE):
  851. switch(mode) {
  852. case(EDIT_SECS): return set_param_data(ap,0 ,2,2,"dd" );
  853. case(EDIT_SAMPS):
  854. case(EDIT_STSAMPS):return set_param_data(ap,0 ,2,2,"ii" );
  855. default:
  856. sprintf(errstr,"Unknown mode (%d) for EDIT_EXCISE in set_legal_param_structure()\n",mode);
  857. return(PROGRAM_ERROR);
  858. }
  859. break;
  860. case(EDIT_EXCISEMANY): return set_param_data(ap,EXCISE_TIMES ,2,0,"00" );
  861. case(INSERTSIL_MANY): return set_param_data(ap,EXCISE_TIMES ,2,0,"00" );
  862. case(EDIT_INSERT):
  863. switch(mode) {
  864. case(EDIT_SECS): return set_param_data(ap,0 ,2,1,"d0" );
  865. case(EDIT_SAMPS):
  866. case(EDIT_STSAMPS):return set_param_data(ap,0 ,2,1,"i0" );
  867. default:
  868. sprintf(errstr,"Unknown mode (%d) for EDIT_INSERT in set_legal_param_structure()\n",mode);
  869. return(PROGRAM_ERROR);
  870. }
  871. break;
  872. //TW NEW
  873. case(EDIT_INSERT2): return set_param_data(ap,0 ,2,2,"dd" );
  874. case(EDIT_INSERTSIL):
  875. switch(mode) {
  876. case(EDIT_SECS): return set_param_data(ap,0 ,2,2,"dd" );
  877. case(EDIT_SAMPS):
  878. case(EDIT_STSAMPS):return set_param_data(ap,0 ,2,2,"ii" );
  879. default:
  880. sprintf(errstr,"Unknown mode (%d) for EDIT_INSERTSIL in set_legal_param_structure()\n",mode);
  881. return(PROGRAM_ERROR);
  882. }
  883. break;
  884. case(EDIT_JOIN): return set_param_data(ap,0 ,2,0,"00" );
  885. case(HOUSE_COPY):
  886. switch(mode) {
  887. case(COPYSF): return set_param_data(ap,0 ,1,0,"0" );
  888. case(DUPL): return set_param_data(ap,0 ,1,1,"i" );
  889. default:
  890. sprintf(errstr,"Unknown mode (%d) for HOUSE_COPY in set_legal_param_structure()\n",mode);
  891. return(PROGRAM_ERROR);
  892. }
  893. break;
  894. case(HOUSE_DEL): return set_param_data(ap,SNDFILENAME ,0,0,"" );
  895. case(HOUSE_CHANS):
  896. switch(mode) {
  897. case(HOUSE_CHANNEL): return set_param_data(ap,0 ,1,1,"i" );
  898. case(HOUSE_CHANNELS): return set_param_data(ap,0 ,0,0,"" );
  899. case(HOUSE_ZCHANNEL): return set_param_data(ap,0 ,1,1,"i" );
  900. case(STOM): return set_param_data(ap,0 ,0,0,"" );
  901. case(MTOS): return set_param_data(ap,0 ,0,0,"" );
  902. default:
  903. sprintf(errstr,"Unknown mode (%d) for HOUSE_CHANS in set_legal_param_structure()\n",mode);
  904. return(PROGRAM_ERROR);
  905. }
  906. break;
  907. case(HOUSE_BUNDLE): return set_param_data(ap,0 ,0,0,"" );
  908. case(HOUSE_SORT):
  909. switch(mode) {
  910. case(BY_FILETYPE): return set_param_data(ap,0 ,3,0,"000" );
  911. case(BY_SRATE): return set_param_data(ap,0 ,3,0,"000" );
  912. case(BY_DURATION): return set_param_data(ap,0 ,3,3,"ddd" );
  913. case(BY_LOG_DUR): return set_param_data(ap,0 ,3,3,"ddd" );
  914. case(IN_DUR_ORDER): return set_param_data(ap,0 ,3,0,"000" );
  915. case(FIND_ROGUES): return set_param_data(ap,0 ,3,0,"000" );
  916. default:
  917. sprintf(errstr,"Unknown mode (%d) for HOUSE_SORT in set_legal_param_structure()\n",mode);
  918. return(PROGRAM_ERROR);
  919. }
  920. break;
  921. case(HOUSE_SPEC):
  922. switch(mode) {
  923. case(HOUSE_RESAMPLE): return set_param_data(ap,0 ,1,1,"i" );
  924. default: return set_param_data(ap,0 ,0,0,"" );
  925. }
  926. break;
  927. case(HOUSE_EXTRACT):
  928. switch(mode) {
  929. case(HOUSE_RECTIFY): return set_param_data(ap,0 ,1,1,"d" );
  930. case(HOUSE_CUTGATE):
  931. case(HOUSE_CUTGATE_PREVIEW):
  932. case(HOUSE_TOPNTAIL): return set_param_data(ap,0 ,0,0,"" );
  933. case(HOUSE_ONSETS): return set_param_data(ap,0 ,9,7,"d0dd0iddi");
  934. case(HOUSE_BYHAND): return set_param_data(ap,BY_HAND ,0,0,"" );
  935. default:
  936. sprintf(errstr,"Unknown mode (%d) for HOUSE_EXTRACT in set_legal_param_structure()\n",mode);
  937. return(PROGRAM_ERROR);
  938. }
  939. break;
  940. case(TOPNTAIL_CLICKS): return set_param_data(ap,0 ,2,2,"dd" );
  941. //TW NEW: REPLACING BRACKETED OUT CODE (Dump & Recover abandoned)
  942. case(HOUSE_BAKUP): return set_param_data(ap,0 ,0,0,"" );
  943. case(HOUSE_GATE): return set_param_data(ap,0 ,0,0,"" );
  944. case(HOUSE_DISK): return set_param_data(ap,0 ,0,0,"" );
  945. case(INFO_PROPS): return set_param_data(ap,0 ,0,0,"" );
  946. case(INFO_SFLEN): return set_param_data(ap,0 ,0,0,"" );
  947. case(INFO_TIMELIST): return set_param_data(ap,0 ,0,0,"" );
  948. case(INFO_LOUDLIST): return set_param_data(ap,0 ,0,0,"" );
  949. case(INFO_TIMESUM): return set_param_data(ap,0 ,0,0,"" );
  950. case(INFO_TIMEDIFF): return set_param_data(ap,0 ,0,0,"" );
  951. case(INFO_SAMPTOTIME): return set_param_data(ap,0 ,1,1,"i" );
  952. case(INFO_TIMETOSAMP): return set_param_data(ap,0 ,1,1,"d" );
  953. case(INFO_MAXSAMP): return set_param_data(ap,0 ,0,0,"" );
  954. case(INFO_MAXSAMP2): return set_param_data(ap,0 ,2,2,"dd" );
  955. case(INFO_LOUDCHAN): return set_param_data(ap,0 ,0,0,"" );
  956. case(INFO_FINDHOLE): return set_param_data(ap,0 ,0,0,"" );
  957. case(INFO_DIFF): return set_param_data(ap,0 ,0,0,"" );
  958. case(INFO_CDIFF): return set_param_data(ap,0 ,0,0,"" );
  959. case(INFO_PRNTSND): return set_param_data(ap,0 ,2,2,"dd" );
  960. case(INFO_MUSUNITS):
  961. switch(mode) {
  962. case(MU_MIDI_TO_FRQ): case(MU_FRQ_TO_MIDI): case(MU_FRQRATIO_TO_SEMIT):
  963. case(MU_FRQRATIO_TO_INTVL): case(MU_SEMIT_TO_FRQRATIO): case(MU_OCTS_TO_FRQRATIO):
  964. case(MU_OCTS_TO_SEMIT): case(MU_SEMIT_TO_OCTS): case(MU_SEMIT_TO_INTVL):
  965. case(MU_FRQRATIO_TO_TSTRETH): case(MU_SEMIT_TO_TSTRETCH): case(MU_OCTS_TO_TSTRETCH):
  966. case(MU_TSTRETCH_TO_FRQRATIO): case(MU_TSTRETCH_TO_SEMIT): case(MU_TSTRETCH_TO_OCTS):
  967. case(MU_TSTRETCH_TO_INTVL): case(MU_GAIN_TO_DB): case(MU_DB_TO_GAIN):
  968. case(MU_FRQRATIO_TO_OCTS): case(MU_MIDI_TO_NOTE): case(MU_FRQ_TO_NOTE):
  969. case(MU_FRQ_TO_DELAY): case(MU_MIDI_TO_DELAY): case(MU_TEMPO_TO_DELAY):
  970. case(MU_DELAY_TO_FRQ): case(MU_DELAY_TO_MIDI): case(MU_DELAY_TO_TEMPO):
  971. return set_param_data(ap,0 ,1,1,"d" );
  972. case(MU_NOTE_TO_FRQ):
  973. case(MU_NOTE_TO_MIDI):
  974. case(MU_NOTE_TO_DELAY):
  975. return set_param_data(ap,NOTE_REPRESENTATION ,0,0,"" );
  976. case(MU_INTVL_TO_FRQRATIO):
  977. case(MU_INTVL_TO_TSTRETCH):
  978. return set_param_data(ap,INTERVAL_REPRESENTATION ,0,0,"" );
  979. default:
  980. sprintf(errstr,"Unknown mode (%d) for MUSUNITS in set_legal_param_structure()\n",mode);
  981. return(PROGRAM_ERROR);
  982. }
  983. break;
  984. case(SYNTH_WAVE): return set_param_data(ap,0 ,4,4,"iidD" );
  985. case(MULTI_SYN): return set_param_data(ap,CHORD_SYN ,4,3,"iid0" );
  986. case(SYNTH_NOISE): return set_param_data(ap,0 ,4,3,"iid0" );
  987. case(SYNTH_SIL): return set_param_data(ap,0 ,4,3,"iid0" );
  988. case(SYNTH_SPEC): return set_param_data(ap,0 ,7,7,"dDDDDDd" );
  989. case(RANDCUTS): return set_param_data(ap,0 ,2,2,"dd" );
  990. case(RANDCHUNKS): return set_param_data(ap,0 ,2,2,"id" );
  991. case(SIN_TAB): return set_param_data(ap,0 ,5,5,"DDddd" );
  992. case(ACC_STREAM): return set_param_data(ap,ATTACK_STREAM ,1,1,"D" );
  993. case(HF_PERM1):
  994. switch(mode) {
  995. case(HFP_SNDOUT): return set_param_data(ap,0 ,10,10,"idddiiiiii");
  996. case(HFP_SNDSOUT): return set_param_data(ap,0 ,10,9, "idd0iiiiii");
  997. case(HFP_TEXTOUT): return set_param_data(ap,0 ,10,6, "0000iiiiii");
  998. case(HFP_MIDIOUT): return set_param_data(ap,0 ,10,6, "0000iiiiii");
  999. default:
  1000. sprintf(errstr,"Unknown mode (%d) for HF_PERM1 in set_legal_param_structure()\n",mode);
  1001. return(PROGRAM_ERROR);
  1002. }
  1003. case(HF_PERM2):
  1004. switch(mode) {
  1005. case(HFP_SNDOUT): return set_param_data(ap,0 ,10,6,"idddi0000i");
  1006. case(HFP_SNDSOUT): return set_param_data(ap,0 ,10,5,"idd0i0000i");
  1007. case(HFP_TEXTOUT): return set_param_data(ap,0 ,10,2,"0000i0000i");
  1008. case(HFP_MIDIOUT): return set_param_data(ap,0 ,10,2,"0000i0000i");
  1009. default:
  1010. sprintf(errstr,"Unknown mode (%d) for HF_PERM2 in set_legal_param_structure()\n",mode);
  1011. return(PROGRAM_ERROR);
  1012. }
  1013. break;
  1014. case(DEL_PERM): return set_param_data(ap,DELPERM ,3,3,"idi");
  1015. case(DEL_PERM2): return set_param_data(ap,DELPERM2 ,3,1,"00i");
  1016. case(TWIXT):
  1017. switch(mode) {
  1018. case(TRUE_EDIT): return set_param_data(ap,SWITCH_TIMES ,2,1,"d0");
  1019. case(IN_SEQUENCE): return set_param_data(ap,SWITCH_TIMES ,2,1,"d0");
  1020. case(RAND_REORDER): return set_param_data(ap,SWITCH_TIMES ,2,2,"di");
  1021. case(RAND_SEQUENCE): return set_param_data(ap,SWITCH_TIMES ,2,2,"di");
  1022. default:
  1023. // sprintf(errstr,"Unknown mode (%d) for TWIXT in set_vflgs()\n",mode);
  1024. sprintf(errstr,"Unknown mode (%d) for TWIXT in set_legal_param_structure()\n",mode);
  1025. return(PROGRAM_ERROR);
  1026. }
  1027. break;
  1028. case(SPHINX):
  1029. switch(mode) {
  1030. case(IN_SEQUENCE): return set_param_data(ap,MANY_SWITCH_TIMES ,2,1,"d0");
  1031. case(RAND_REORDER): return set_param_data(ap,MANY_SWITCH_TIMES ,2,2,"di");
  1032. case(RAND_SEQUENCE): return set_param_data(ap,MANY_SWITCH_TIMES ,2,2,"di");
  1033. default:
  1034. // sprintf(errstr,"Unknown mode (%d) for SPHINX in set_vflgs()\n",mode);
  1035. sprintf(errstr,"Unknown mode (%d) for SPHINX in set_legal_param_structure()\n",mode);
  1036. return(PROGRAM_ERROR);
  1037. }
  1038. break;
  1039. //TW NEW
  1040. case(MIX_ON_GRID): return set_param_data(ap,GRIDDED_MIX ,0,0,"");
  1041. case(AUTOMIX): return set_param_data(ap,AUTO_MIX ,1,1,"D");
  1042. case(NOISE_SUPRESS): return set_param_data(ap,0 ,4,4,"dddd");
  1043. case(TIME_GRID): return set_param_data(ap,0 ,3,3,"iDD");
  1044. case(SEQUENCER2): return set_param_data(ap,SEQUENCER2_VALUES ,1,1,"d");
  1045. case(SEQUENCER): return set_param_data(ap,SEQUENCER_VALUES ,1,1,"d");
  1046. case(CONVOLVE):
  1047. switch(mode) {
  1048. case(CONV_NORMAL): return set_param_data(ap,0 ,1,0,"0");
  1049. case(CONV_TVAR): return set_param_data(ap,0 ,1,1,"D");
  1050. default:
  1051. sprintf(errstr,"Unknown mode (%d) for CONVOLVE in set_legal_param_structure()\n",mode);
  1052. return(PROGRAM_ERROR);
  1053. }
  1054. break;
  1055. case(BAKTOBAK): return set_param_data(ap,0 ,2,2,"dd");
  1056. case(ADDTOMIX): return set_param_data(ap,0 ,0,0,"");
  1057. case(MIX_PAN): return set_param_data(ap,0 ,1,1,"D");
  1058. case(SHUDDER): return set_param_data(ap,0 ,8,8,"dDDDDDDD");
  1059. case(MIX_AT_STEP): return set_param_data(ap,0 ,1,1,"d");
  1060. case(FIND_PANPOS): return set_param_data(ap,0 ,1,1,"d");
  1061. case(CLICK): return set_param_data(ap,CLICKTRACK ,0,0,"");
  1062. case(DOUBLETS): return set_param_data(ap,0 ,2,2,"Di");
  1063. case(SYLLABS): return set_param_data(ap,SYLLTIMES ,2,2,"dd");
  1064. case(JOIN_SEQ): return set_param_data(ap,JOINSEQ ,2,0,"00");
  1065. case(JOIN_SEQDYN): return set_param_data(ap,JOINSEQDYN ,2,0,"00");
  1066. case(MAKE_VFILT): return set_param_data(ap,0 ,0,0,"");
  1067. case(BATCH_EXPAND): return set_param_data(ap,BATCH ,3,3,"iii");
  1068. case(MIX_MODEL): return set_param_data(ap,0 ,0,0,"");
  1069. case(CYCINBETWEEN): return set_param_data(ap,0 ,2,2,"id");
  1070. case(ENVSYN):
  1071. switch(mode) {
  1072. case(ENVSYN_USERDEF):
  1073. return set_param_data(ap,ENVSYN_ENVELOPE ,6,4,"ddDd00" );
  1074. default: return set_param_data(ap,0 ,6,6,"ddDdDD" );
  1075. }
  1076. break;
  1077. case(RRRR_EXTEND):
  1078. switch(mode) {
  1079. case(0): return set_param_data(ap,0 ,11,10,"dddidiDD0DD");
  1080. case(1): return set_param_data(ap,0 ,11,11,"dddidiDDiDD");
  1081. case(2): return set_param_data(ap,0 ,11,4, "dd0id000000");
  1082. }
  1083. break;
  1084. case(SSSS_EXTEND): return set_param_data(ap,0 ,4,4,"dddd");
  1085. case(HOUSE_GATE2): return set_param_data(ap,0 ,5,5,"ddddd");
  1086. case(GRAIN_ASSESS): return set_param_data(ap,0 ,2,0,"00" );
  1087. case(ZCROSS_RATIO): return set_param_data(ap,0 ,0,0,"00" );
  1088. case(GREV):
  1089. switch(mode) {
  1090. case(0): return set_param_data(ap,0 ,5,3,"ddI00");
  1091. case(1): return set_param_data(ap,0 ,5,4,"ddII0");
  1092. case(2): return set_param_data(ap,0 ,5,5,"ddIIi");
  1093. case(3): return set_param_data(ap,0 ,5,5,"ddIIi");
  1094. case(4): return set_param_data(ap,0 ,5,4,"ddID0");
  1095. case(5): return set_param_data(ap,0 ,5,3,"ddI00");
  1096. case(6): return set_param_data(ap,GRAIN_TIMINGS ,5,3,"ddI00");
  1097. }
  1098. break;
  1099. /* | |m| | | */
  1100. /* | |a| | | */
  1101. /* | |x| | | */
  1102. /* | |p|p| | */
  1103. /* | |a|a| | */
  1104. /* | special-data |r|r| param | */
  1105. /* | |a|a| list | */
  1106. /* | |m|m| | */
  1107. /* | |c|c| | */
  1108. /* | |n|n| | */
  1109. /* | |t|t| | */
  1110. default:
  1111. sprintf(errstr,"Unknown process (%d) in set_legal_param_structure()\n",process);
  1112. return(PROGRAM_ERROR);
  1113. }
  1114. return(FINISHED);
  1115. }
  1116. /************************** SET_LEGAL_OPTION_AND_VARIANT_STRUCTURE ***********/
  1117. int set_legal_option_and_variant_structure(int process,int mode,aplptr ap)
  1118. {
  1119. /*| | | | |v| | */
  1120. /*| |o| | |f|v| */
  1121. /*|option|p| option |variant |l|p|variant*/
  1122. /*|flags |t| list | flags |a|a|list */
  1123. /*| |c| | |g|r| */
  1124. /*| |n| | |c|a| */
  1125. /*| |t| | |n|m| */
  1126. /*| | | | |t|s| */
  1127. switch(process) {
  1128. case(ACCU): return set_vflgs(ap,"" ,0,"" ,"dg" ,2,2,"DD" );
  1129. case(ALT): return set_vflgs(ap,"" ,0,"" ,"x" ,1,0,"0" );
  1130. case(ARPE):
  1131. switch(mode) {
  1132. case(ON): case(BOOST): case(ABOVE_BOOST): case(BELOW_BOOST):
  1133. return set_vflgs(ap,"plhba", 5,"dDDDD" ,"NsTK" ,4,2,"dI00" );
  1134. //TW JULY 2006
  1135. case(ABOVE): case(BELOW):
  1136. return set_vflgs(ap,"plhba", 5,"dDD0D" ,"" ,0,0,"" );
  1137. default: return set_vflgs(ap,"plhba", 5,"dDDDD" ,"" ,0,0,"" );
  1138. }
  1139. break;
  1140. case(AVRG): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1141. case(BARE): return set_vflgs(ap,"" ,0,"" ,"x" ,1,0,"0" );
  1142. case(BLTR): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1143. case(BLUR): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1144. case(BRIDGE): return set_vflgs(ap,"abcde" ,5,"ddddd" ,"fg" ,2,2,"dd" );
  1145. case(CHANNEL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1146. case(CHORD): return set_vflgs(ap,"" ,0,"" ,"btx" ,3,2,"DD0" );
  1147. case(CHORUS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1148. case(CLEAN): return set_vflgs(ap,"g" ,1,"d" ,"" ,0,0,"" );
  1149. case(CROSS): return set_vflgs(ap,"" ,0,"" ,"i" ,1,1,"D" );
  1150. case(CUT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1151. case(DIFF): return set_vflgs(ap,"" ,0,"" ,"ca" ,2,1,"D0" );
  1152. case(DRUNK): return set_vflgs(ap,"" ,0,"" ,"z" ,1,0,"0" );
  1153. case(EXAG): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1154. case(FILT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1155. case(FMNTSEE): return set_vflgs(ap,"" ,0,"" ,"v" ,1,0,"0" );
  1156. case(FOCUS): return set_vflgs(ap,"bt" ,2,"DD" ,"s" ,1,1,"i" );
  1157. case(FOLD): return set_vflgs(ap,"" ,0,"" ,"x" ,1,0,"0" );
  1158. case(FORM): return set_vflgs(ap,"lhg" ,3,"ddd" ,"" ,0,0,"" );
  1159. case(FORMANTS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1160. case(FORMSEE): return set_vflgs(ap,"" ,0,"" ,"s" ,1,0,"0" );
  1161. case(FREEZE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1162. case(FREEZE2): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1163. case(FREQUENCY): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1164. case(GAIN): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1165. case(GLIDE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1166. case(GLIS): return set_vflgs(ap,"" ,0,"" ,"t" ,1,1,"d" );
  1167. case(GRAB): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1168. case(GREQ): return set_vflgs(ap,"" ,0,"" ,"r" ,1,0,"0" );
  1169. case(INVERT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1170. case(LEAF): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1171. case(LEVEL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1172. case(MAGNIFY): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1173. case(MAKE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1174. case(MAX): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1175. case(MEAN): return set_vflgs(ap,"lhc" ,3,"ddi" ,"z" ,1,0,"0" );
  1176. case(MORPH): return set_vflgs(ap,"s" ,1,"d" ,"" ,0,0,"" );
  1177. case(NOISE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1178. case(OCT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1179. case(OCTVU): return set_vflgs(ap,"" ,0,"" ,"f" ,1,1,"d" );
  1180. case(P_APPROX): return set_vflgs(ap,"pts" ,3,"DDD" ,"" ,0,0,"" );
  1181. case(P_CUT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1182. case(P_EXAG): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1183. case(P_FIX): return set_vflgs(ap,"" ,0,"" ,"rxlhsbewi",9,7,"ddddidd00");
  1184. case(P_HEAR): return set_vflgs(ap,"g" ,1,"d" ,"" ,0,0,"" );
  1185. case(P_INFO): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1186. case(P_INVERT): return set_vflgs(ap,"" ,0,"" ,"mbt" ,3,3,"Ddd" );
  1187. case(P_QUANTISE): return set_vflgs(ap,"" ,0,"" ,"o" ,1,0,"0" );
  1188. case(P_RANDOMISE): return set_vflgs(ap,"" ,0,"" ,"s" ,1,1,"d" );
  1189. case(P_SEE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1190. case(P_SMOOTH): return set_vflgs(ap,"" ,0,"" ,"ph" ,2,1,"D0" );
  1191. //TW NEW
  1192. case(P_SYNTH): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1193. case(VFILT):
  1194. case(P_VOWELS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1195. case(P_GEN): return set_vflgs(ap,"co" ,2,"ii" ,"" ,0,0,"" );
  1196. case(P_INSERT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1197. case(P_SINSERT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1198. case(P_PTOSIL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1199. case(P_NTOSIL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1200. case(ANALENV): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1201. case(P_BINTOBRK): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1202. case(MAKE2): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1203. case(P_INTERP): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1204. case(P_TRANSPOSE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1205. case(P_VIBRATO): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1206. case(P_WRITE): return set_vflgs(ap,"d" ,1,"d" ,"" ,0,0,"" );
  1207. case(P_ZEROS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1208. case(PEAK): return set_vflgs(ap,"ctf" ,3,"ddd" ,"h" ,1,0,"0" );
  1209. case(PICK): return set_vflgs(ap,"c" ,1,"D" ,"" ,0,0,"" );
  1210. case(PITCH):
  1211. switch(mode) {
  1212. case(PICH_TO_BIN):
  1213. return set_vflgs(ap,"tgsnlh",6,"dididd" ,"az" ,2,0,"00" );
  1214. case(PICH_TO_BRK):
  1215. return set_vflgs(ap,"tgsnlhd",7,"dididdd","a" ,1,0,"0" );
  1216. }
  1217. break;
  1218. case(PLUCK): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1219. case(PRINT): return set_vflgs(ap,"w" ,1,"i", "" ,0,0,"" );
  1220. case(REPITCH): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1221. case(REPITCHB): return set_vflgs(ap,"d" ,1,"d" ,"" ,0,0,"" );
  1222. case(REPORT): return set_vflgs(ap,"bts" ,3,"DDi" ,"" ,0,0,"" );
  1223. case(SCAT): return set_vflgs(ap,"b" ,1,"D" ,"rn" ,2,0,"00" );
  1224. case(SHIFT): return set_vflgs(ap,"" ,0,"" ,"l" ,1,0,"0" );
  1225. case(SHIFTP): return set_vflgs(ap,"" ,0,"" ,"d" ,1,1,"D" );
  1226. case(SHUFFLE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1227. case(SPLIT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1228. case(SPREAD): return set_vflgs(ap,"s" ,1,"D" ,"" ,0,0,"" );
  1229. case(STEP): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1230. case(STRETCH): return set_vflgs(ap,"" ,0,"" ,"d" ,1,1,"D" );
  1231. case(SUM): return set_vflgs(ap,"" ,0,"" ,"c" ,1,1,"D" );
  1232. case(SUPR): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1233. case(S_TRACE):
  1234. switch(mode) {
  1235. case(TRC_ALL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1236. default: return set_vflgs(ap,"" ,0,"" ,"r" ,1,0,"0" );
  1237. }
  1238. break;
  1239. case(TRACK):
  1240. switch(mode) {
  1241. case(TRK_TO_BIN):
  1242. return set_vflgs(ap,"tgsh" ,4,"didd" ,"" ,0,0,"" );
  1243. case(TRK_TO_BRK):
  1244. return set_vflgs(ap,"tgshd" ,5,"diddd" ,"" ,0,0,"" );
  1245. }
  1246. break;
  1247. case(TRNSF): return set_vflgs(ap,"" ,0,"" ,"lhx" ,3,2,"DD0" );
  1248. case(TRNSP): return set_vflgs(ap,"" ,0,"" ,"lhx" ,3,2,"DD0" );
  1249. case(TSTRETCH): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1250. case(TUNE): return set_vflgs(ap,"fc" ,2,"DD" ,"tb" ,2,2,"ID" );
  1251. case(VOCODE): return set_vflgs(ap,"lhg" ,3,"ddd" ,"" ,0,0,"" );
  1252. case(WARP): return set_vflgs(ap,"pts" ,3,"DDD" ,"" ,0,0,"" );
  1253. case(WAVER): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1254. case(WEAVE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1255. case(WINDOWCNT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1256. case(LIMIT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1257. case(MULTRANS): return set_vflgs(ap,"" ,0,"" ,"btx" ,3,2,"DD0" );
  1258. /************* GROUCHO **************/
  1259. /************* GROUCHO **************/
  1260. /************* GROUCHO **************/
  1261. case(DISTORT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1262. case(DISTORT_ENV):
  1263. switch(mode) {
  1264. case(DISTORTE_RISING):
  1265. case(DISTORTE_FALLING): /* 1 param, 2 variants: param[1] = trof */
  1266. return set_vflgs(ap,"" ,0,"" ,"te" ,2,2,"DD" );
  1267. case(DISTORTE_TROFFED): /* 2 params, 1 variant: param[1] = trof */
  1268. return set_vflgs(ap,"" ,0,"" ,"e" ,1,1,"D" );
  1269. case(DISTORTE_USERDEF):
  1270. return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1271. }
  1272. break;
  1273. case(DISTORT_AVG): return set_vflgs(ap,"m" ,1,"d" ,"s" ,1,1,"i" );
  1274. case(DISTORT_OMT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1275. case(DISTORT_MLT): return set_vflgs(ap,"" ,0,"" ,"s" ,1,0,"0" );
  1276. case(DISTORT_DIV): return set_vflgs(ap,"" ,0,"" ,"i" ,1,0,"0" );
  1277. case(DISTORT_HRM): return set_vflgs(ap,"" ,0,"" ,"p" ,1,1,"d" );
  1278. case(DISTORT_FRC): return set_vflgs(ap,"" ,0,"" ,"p" ,1,1,"d" );
  1279. case(DISTORT_REV): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1280. case(DISTORT_SHUF):return set_vflgs(ap,"c" ,1,"I" ,"s" ,1,1,"i" );
  1281. case(DISTORT_RPT2):
  1282. case(DISTORT_RPT): return set_vflgs(ap,"c" ,1,"I" ,"s" ,1,1,"i" );
  1283. case(DISTORT_RPTFL): return set_vflgs(ap,"c" ,1,"I" ,"sf" ,2,2,"id" );
  1284. case(DISTORT_INTP):return set_vflgs(ap,"" ,0,"" ,"s" ,1,1,"i" );
  1285. case(DISTORT_DEL): return set_vflgs(ap,"" ,0,"" ,"s" ,1,1,"i" );
  1286. case(DISTORT_RPL): return set_vflgs(ap,"" ,0,"" ,"s" ,1,1,"i" );
  1287. case(DISTORT_TEL): return set_vflgs(ap,"" ,0,"" ,"sa" ,2,1,"i0" );
  1288. case(DISTORT_FLT): return set_vflgs(ap,"" ,0,"" ,"s" ,1,1,"i" );
  1289. case(DISTORT_INT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1290. case(DISTORT_CYCLECNT):
  1291. return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1292. case(DISTORT_PCH): return set_vflgs(ap,"cs" ,2,"Ii" ,"" ,0,0,"" );
  1293. case(DISTORT_OVERLOAD):
  1294. return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1295. //TW NEW
  1296. case(DISTORT_PULSED):
  1297. return set_vflgs(ap,"" ,0,"" ,"se" ,2,0,"00" );
  1298. case(ZIGZAG):
  1299. switch(mode) {
  1300. case(ZIGZAG_SELF):
  1301. return set_vflgs(ap,"sm" ,2,"dd" ,"r" ,1,1,"i" );
  1302. case(ZIGZAG_USER):
  1303. return set_vflgs(ap,"s" ,1,"d" ,"" ,0,0,"" );
  1304. default:
  1305. sprintf(errstr,"Unknown mode (%d) : ZIGZAG: set_vflgs()\n",mode);
  1306. return(PROGRAM_ERROR);
  1307. }
  1308. break;
  1309. case(LOOP):
  1310. switch(mode) {
  1311. case(LOOP_ALL):
  1312. return set_vflgs(ap,"ws" ,2,"dd" ,"b" ,1,0,"0" );
  1313. case(LOOP_OUTLEN):
  1314. case(LOOP_RPTS):
  1315. return set_vflgs(ap,"lws" ,3,"ddd" ,"b" ,1,0,"0" );
  1316. default:
  1317. sprintf(errstr,"Unknown mode (%d) : LOOP: set_vflgs()\n",mode);
  1318. return(PROGRAM_ERROR);
  1319. }
  1320. break;
  1321. case(SCRAMBLE): return set_vflgs(ap,"w" ,1,"d" ,"sbe" ,3,1,"i00" );
  1322. case(ITERATE): return set_vflgs(ap,"" ,0,"" ,"drpafgs" ,7,7,"DDDDDdi");
  1323. case(ITERATE_EXTEND): return set_vflgs(ap,"" ,0,"" ,"s" ,1,1,"i");
  1324. case(DRUNKWALK):
  1325. switch(mode) {
  1326. case(TOTALLY_PISSED):
  1327. return set_vflgs(ap,"s" ,1,"d" ,"cor" ,3,3,"DDi" );
  1328. case(HAS_SOBER_MOMENTS):
  1329. return set_vflgs(ap,"s" ,1,"d" ,"corlh" ,5,5,"DDiDD" );
  1330. default:
  1331. sprintf(errstr,"Unknown mode (%d) : DRUNKWALK: set_vflgs()\n",mode);
  1332. return(PROGRAM_ERROR);
  1333. }
  1334. break;
  1335. case(DECORATED): case(PREDECOR): case(POSTDECOR):
  1336. return set_vflgs(ap,"aps" ,3,"DDD" ,"rwdihek",7,1,"i000000");
  1337. case(ORNATE): case(PREORNATE): case(POSTORNATE):
  1338. return set_vflgs(ap,"aps" ,3,"DDD" ,"rwdihe" ,6,1,"i00000");
  1339. case(MOTIFS): case(TMOTIFS):
  1340. case(MOTIFSIN): case(TMOTIFSIN):
  1341. return set_vflgs(ap,"aps" ,3,"DDD" ,"rwdi" ,4,1,"i000" );
  1342. case(GROUPS): case(TGROUPS):
  1343. return set_vflgs(ap,"aps" ,3,"DDD" ,"rwdi" ,4,1,"i000" );
  1344. case(SIMPLE_TEX):case(TIMED):
  1345. return set_vflgs(ap,"aps" ,3,"DDD" ,"rwcp" ,4,1,"i000" );
  1346. case(GRAIN_COUNT): case(GRAIN_OMIT): case(GRAIN_REPITCH): case(GRAIN_TIMEWARP):
  1347. case(GRAIN_GET): case(GRAIN_DUPLICATE): case(GRAIN_RERHYTHM): case(GRAIN_ALIGN):
  1348. case(GRAIN_POSITION): case(GRAIN_REORDER): case(GRAIN_REMOTIF): case(GRAIN_REVERSE):
  1349. return set_vflgs(ap,"blh" ,3,"dDd" ,"tx" ,2,1,"d0" );
  1350. case(ENV_EXTRACT):
  1351. switch(mode) {
  1352. case(ENV_ENVFILE_OUT):
  1353. return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1354. case(ENV_BRKFILE_OUT):
  1355. return set_vflgs(ap,"d" ,1,"d" ,"" ,0,0,"" );
  1356. default:
  1357. sprintf(errstr,"Unknown mode (%d) for ENV_EXTRACT: set_vflgs()\n",mode);
  1358. return(PROGRAM_ERROR);
  1359. }
  1360. break;
  1361. case(ENV_CREATE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1362. case(ENV_WARPING): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1363. case(ENV_RESHAPING): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1364. case(ENV_REPLOTTING): return set_vflgs(ap,"d" ,1,"d" ,"" ,0,0,"" );
  1365. case(ENV_IMPOSE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1366. //TW NEW
  1367. case(ENV_PROPOR): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1368. case(ENV_REPLACE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1369. case(ENV_DOVETAILING): return set_vflgs(ap,"t" ,1,"i" ,"" ,0,0,"" );
  1370. case(ENV_CURTAILING): return set_vflgs(ap,"t" ,1,"i" ,"" ,0,0,"" );
  1371. case(ENV_ENVTOBRK): return set_vflgs(ap,"d" ,1,"d" ,"" ,0,0,"" );
  1372. case(ENV_ENVTODBBRK): return set_vflgs(ap,"d" ,1,"d" ,"" ,0,0,"" );
  1373. case(ENV_BRKTOENV): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1374. case(ENV_DBBRKTOENV): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1375. case(ENV_DBBRKTOBRK): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1376. case(ENV_BRKTODBBRK): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1377. case(ENV_SWELL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1378. case(ENV_ATTACK): return set_vflgs(ap,"t" ,1,"i" ,"" ,0,0,"" );
  1379. case(ENV_PLUCK): return set_vflgs(ap,"ad",2,"id" ,"" ,0,0,"" );
  1380. case(ENV_TREMOL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1381. case(MIX): return set_vflgs(ap,"seg",3,"ddd" ,"a" ,1,0,"0" );
  1382. case(MIXTWO): return set_vflgs(ap,"sjkbe",5,"ddddd","" ,0,0,"" );
  1383. //TW NEW
  1384. case(MIXMANY): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1385. case(MIXBALANCE): return set_vflgs(ap,"kbe",3,"Ddd" ,"" ,0,0,"" );
  1386. case(MIXINTERL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1387. case(MIXINBETWEEN): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1388. case(MIXCROSS):
  1389. switch(mode) {
  1390. case(MCLIN): return set_vflgs(ap,"sbe" ,3,"ddd" ,"" ,0,0,"" );
  1391. case(MCCOS): return set_vflgs(ap,"sbep",4,"dddd","" ,0,0,"" );
  1392. }
  1393. break;
  1394. case(MIXTEST): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1395. case(MIXMAX): return set_vflgs(ap,"se",2,"dd" ,"" ,0,0,"" );
  1396. case(MIXFORMAT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1397. case(MIXDUMMY): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1398. case(MIXSYNC): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1399. case(MIXSYNCATT): return set_vflgs(ap,"w" ,1,"i" ,"p" ,1,0,"0" );
  1400. case(MIXTWARP):
  1401. switch(mode) {
  1402. case(MTW_TIMESORT):return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1403. default: return set_vflgs(ap,"se",2,"ii" ,"" ,0,0,"" );
  1404. }
  1405. case(MIXSWARP):
  1406. switch(mode) {
  1407. case(MSW_TWISTALL):
  1408. case(MSW_TWISTONE):return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1409. default: return set_vflgs(ap,"se",2,"ii" ,"" ,0,0,"" );
  1410. }
  1411. break;
  1412. case(MIXGAIN): return set_vflgs(ap,"se",2,"ii" ,"" ,0,0,"" );
  1413. case(MIXSHUFL):
  1414. switch(mode) {
  1415. case(MSH_DUPL_AND_RENAME):
  1416. return set_vflgs(ap,"se",2,"ii" ,"x" ,1,0,"0" );
  1417. default:
  1418. return set_vflgs(ap,"se",2,"ii" ,"" ,0,0,"" );
  1419. }
  1420. break;
  1421. /*RWD May 2004 added t and a "d" to all filters ... correct? */
  1422. case(EQ): return set_vflgs(ap,"ts" ,2,"dd" ,"" ,0,0,"" );
  1423. case(LPHP): return set_vflgs(ap,"ts" ,2,"dd" ,"" ,0,0,"" );
  1424. case(FSTATVAR): return set_vflgs(ap,"t" ,1,"d" ,"" ,0,0,"" );
  1425. case(FLTBANKN): return set_vflgs(ap,"ts" ,2,"dd" ,"d" ,1,0,"0" );
  1426. case(FLTBANKC): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1427. case(FLTBANKU): return set_vflgs(ap,"t" ,1,"d" ,"d" ,1,0,"0" );
  1428. case(FLTBANKV): return set_vflgs(ap,"thr" ,3,"did" ,"don" ,3,0,"000" );
  1429. case(FLTBANKV2): return set_vflgs(ap,"t" ,1,"d" ,"dn" ,2,0,"00" );
  1430. case(FLTITER): return set_vflgs(ap,"srpa",4,"ddDD" ,"dien" ,4,0,"0000");
  1431. case(FLTSWEEP): return set_vflgs(ap,"tp" ,2,"dd" ,"" ,0,0,"" );
  1432. case(ALLPASS): return set_vflgs(ap,"ts" ,2,"dd" ,"l" ,1,0,"0" );
  1433. case(MOD_LOUDNESS):
  1434. switch(mode) {
  1435. case(LOUDNESS_GAIN): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1436. case(LOUDNESS_DBGAIN): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1437. case(LOUDNESS_NORM): return set_vflgs(ap,"l" ,1,"d" ,"" ,0,0,"" );
  1438. case(LOUDNESS_SET): return set_vflgs(ap,"l" ,1,"d" ,"" ,0,0,"" );
  1439. case(LOUDNESS_BALANCE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1440. case(LOUDNESS_PHASE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1441. case(LOUDNESS_LOUDEST): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1442. case(LOUDNESS_EQUALISE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1443. case(LOUD_PROPOR): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1444. case(LOUD_DB_PROPOR): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1445. default:
  1446. sprintf(errstr,"Unknown mode (%d) for MOD_LOUDNESS in set_vflgs()\n",mode);
  1447. return(PROGRAM_ERROR);
  1448. }
  1449. break;
  1450. case(MOD_SPACE):
  1451. switch(mode) {
  1452. case(MOD_PAN): return set_vflgs(ap,"p" ,1,"d" ,"" ,0,0,"" );
  1453. case(MOD_MIRROR): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1454. case(MOD_MIRRORPAN): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1455. case(MOD_NARROW): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1456. default:
  1457. sprintf(errstr,"Unknown mode (%d) for MOD_SPACE in set_vflgs()\n",mode);
  1458. return(PROGRAM_ERROR);
  1459. }
  1460. break;
  1461. //TW NEW
  1462. case(SCALED_PAN): return set_vflgs(ap,"p" ,1,"d" ,"" ,0,0,"" );
  1463. case(MOD_PITCH):
  1464. switch(mode) {
  1465. case(MOD_ACCEL): return set_vflgs(ap,"s" ,1,"d" ,"" ,0,0,"" );
  1466. case(MOD_VIBRATO): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1467. default: return set_vflgs(ap,"" ,0,"" ,"o" ,1,0,"0" );
  1468. }
  1469. break;
  1470. case(MOD_REVECHO):
  1471. switch(mode) {
  1472. case(MOD_DELAY): return set_vflgs(ap,"p" ,1,"d" ,"i" ,1,0,"0" );
  1473. case(MOD_VDELAY): return set_vflgs(ap,"p" ,1,"d" ,"s" ,1,1,"i" );
  1474. case(MOD_STADIUM): return set_vflgs(ap,"grse",4,"dddi" ,"n" ,1,0,"0" );
  1475. default:
  1476. sprintf(errstr,"Unknown mode (%d) for MOD_REVECHO in set_vflgs()\n",mode);
  1477. return(PROGRAM_ERROR);
  1478. }
  1479. break;
  1480. case(MOD_RADICAL):
  1481. switch(mode) {
  1482. case(MOD_REVERSE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1483. case(MOD_SHRED): return set_vflgs(ap,"s" ,1,"d" ,"n" ,1,0,"0" );
  1484. case(MOD_SCRUB): return set_vflgs(ap,"hlse",4,"dddd" ,"f" ,1,0,"0" );
  1485. case(MOD_LOBIT):
  1486. case(MOD_LOBIT2): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1487. case(MOD_RINGMOD): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1488. case(MOD_CROSSMOD): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1489. default:
  1490. sprintf(errstr,"Unknown mode (%d) for MOD_RADICAL in set_vflgs()\n",mode);
  1491. return(PROGRAM_ERROR);
  1492. }
  1493. break;
  1494. case(BRASSAGE):
  1495. switch(mode) {
  1496. case(GRS_PITCHSHIFT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1497. case(GRS_TIMESTRETCH):return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1498. case(GRS_REVERB): return set_vflgs(ap,"r" ,1,"D" ,"" ,0,0,"" );
  1499. case(GRS_SCRAMBLE): return set_vflgs(ap,"r" ,1,"D" ,"" ,0,0,"" );
  1500. case(GRS_GRANULATE): return set_vflgs(ap,"" ,0,"" ,"d" ,1,0,"0" );
  1501. case(GRS_BRASSAGE): return set_vflgs(ap,"rjlc",4,"DDdi" ,"dxn" ,3,0,"000" );
  1502. case(GRS_FULL_MONTY): return set_vflgs(ap,"rjlc",4,"DDdi" ,"dxn" ,3,0,"000" );
  1503. default:
  1504. sprintf(errstr,"Unknown mode (%d) for BRASSAGE in set_vflgs()\n",mode);
  1505. return(PROGRAM_ERROR);
  1506. }
  1507. break;
  1508. case(SAUSAGE): return set_vflgs(ap,"rjlc",4,"DDdi" ,"dxn" ,3,0,"000" );
  1509. case(PVOC_ANAL): return set_vflgs(ap,"co" ,2,"ii" ,"" ,0,0,"" );
  1510. case(PVOC_SYNTH): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1511. case(PVOC_EXTRACT): return set_vflgs(ap,"co" ,2,"ii" ,"dlh" ,3,3,"iii" );
  1512. /* TEMPORARY TEST ROUTINE */
  1513. case(WORDCNT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1514. /* TEMPORARY TEST ROUTINE */
  1515. case(EDIT_CUT): return set_vflgs(ap,"w" ,1,"d" ,"" ,0,0,"" );
  1516. //TW NEW
  1517. case(EDIT_CUTMANY): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1518. case(STACK): return set_vflgs(ap,"" ,0,"" ,"sn" ,2,0,"00" );
  1519. case(EDIT_CUTEND): return set_vflgs(ap,"w" ,1,"d" ,"" ,0,0,"" );
  1520. case(MANY_ZCUTS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1521. case(EDIT_ZCUT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1522. case(EDIT_EXCISE): return set_vflgs(ap,"w" ,1,"d" ,"" ,0,0,"" );
  1523. case(EDIT_EXCISEMANY): return set_vflgs(ap,"w" ,1,"d" ,"" ,0,0,"" );
  1524. case(INSERTSIL_MANY): return set_vflgs(ap,"w" ,1,"d" ,"" ,0,0,"" );
  1525. case(EDIT_INSERT): return set_vflgs(ap,"wl" ,2,"dd" ,"o" ,1,0,"0" );
  1526. //TW NEW
  1527. case(EDIT_INSERT2): return set_vflgs(ap,"wl" ,2,"dd" ,"" ,0,0,"" );
  1528. case(EDIT_INSERTSIL): return set_vflgs(ap,"w" ,1,"d" ,"os" ,2,0,"00" );
  1529. case(EDIT_JOIN): return set_vflgs(ap,"w" ,1,"d" ,"be" ,2,0,"00" );
  1530. case(HOUSE_COPY):
  1531. switch(mode) {
  1532. case(COPYSF): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1533. case(DUPL):
  1534. if(!sloom)
  1535. return set_vflgs(ap,"" ,0,"" ,"i" ,1,0,"0" );
  1536. else
  1537. return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"0" );
  1538. default:
  1539. sprintf(errstr,"Unknown mode (%d) : for HOUSE_COPY in set_vflgs()\n", mode);
  1540. return(PROGRAM_ERROR);
  1541. }
  1542. break;
  1543. case(HOUSE_DEL): return set_vflgs(ap,"" ,0,"" ,"a" ,1,0,"0" );
  1544. case(HOUSE_CHANS):
  1545. switch(mode) {
  1546. case(HOUSE_CHANNEL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1547. case(HOUSE_CHANNELS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1548. case(HOUSE_ZCHANNEL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1549. case(STOM): return set_vflgs(ap,"" ,0,"" ,"p" ,1,0,"0" );
  1550. case(MTOS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1551. default:
  1552. sprintf(errstr,"Unknown mode (%d) for HOUSE_CHANS in set_vflgs()\n",mode);
  1553. return(PROGRAM_ERROR);
  1554. }
  1555. break;
  1556. case(HOUSE_BUNDLE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1557. case(HOUSE_SORT):
  1558. switch(mode) {
  1559. case(BY_FILETYPE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1560. case(BY_SRATE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1561. case(BY_DURATION): return set_vflgs(ap,"" ,0,"" ,"l" ,1,0,"0" );
  1562. case(BY_LOG_DUR): return set_vflgs(ap,"" ,0,"" ,"l" ,1,0,"0" );
  1563. case(IN_DUR_ORDER): return set_vflgs(ap,"" ,0,"" ,"l" ,1,0,"0" );
  1564. case(FIND_ROGUES): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1565. default:
  1566. sprintf(errstr,"Unknown mode (%d) for HOUSE_SORT in set_vflgs()\n",mode);
  1567. return(PROGRAM_ERROR);
  1568. }
  1569. break;
  1570. case(HOUSE_SPEC):
  1571. switch(mode) {
  1572. case(HOUSE_RESAMPLE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1573. case(HOUSE_CONVERT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1574. #ifdef NOTDEF
  1575. case(HOUSE_REPROP): return set_vflgs(ap,"sct",3,"iii" ,"" ,0,0,"" );
  1576. #else
  1577. /*RWD May 2005 removed -t option */
  1578. case(HOUSE_REPROP): return set_vflgs(ap,"sc",2,"ii" ,"" ,0,0,"" );
  1579. #endif
  1580. default:
  1581. sprintf(errstr,"Unknown mode (%d) for HOUSE_SPEC in set_vflgs()\n",mode);
  1582. return(PROGRAM_ERROR);
  1583. }
  1584. break;
  1585. case(HOUSE_EXTRACT):
  1586. switch(mode) {
  1587. case(HOUSE_CUTGATE):
  1588. if(sloom)
  1589. return set_vflgs(ap,"gsethbilw",9,"diddiiddi","",0,0,"0");
  1590. else
  1591. return set_vflgs(ap,"gsethbilw",9,"diddiiddi","n",1,0,"0");
  1592. case(HOUSE_CUTGATE_PREVIEW):
  1593. return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1594. case(HOUSE_ONSETS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1595. case(HOUSE_TOPNTAIL): return set_vflgs(ap,"gs" ,2,"dd" ,"be" ,2,0,"00" );
  1596. case(HOUSE_RECTIFY): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1597. case(HOUSE_BYHAND): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1598. default:
  1599. sprintf(errstr,"Unknown mode (%d) for HOUSE_SPEC in set_vflgs()\n",mode);
  1600. return(PROGRAM_ERROR);
  1601. }
  1602. break;
  1603. case(TOPNTAIL_CLICKS): return set_vflgs(ap,"" ,0,"" ,"be" ,2,0,"00" );
  1604. case(HOUSE_BAKUP): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1605. case(HOUSE_GATE): return set_vflgs(ap,"z" ,1,"i" ,"" ,0,0,"" );
  1606. case(HOUSE_DISK): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1607. case(INFO_PROPS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1608. case(INFO_SFLEN): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1609. case(INFO_TIMELIST): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1610. case(INFO_LOUDLIST): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1611. case(INFO_TIMESUM): return set_vflgs(ap,"s" ,1,"d" ,"" ,0,0,"" );
  1612. case(INFO_TIMEDIFF): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1613. case(INFO_SAMPTOTIME): return set_vflgs(ap,"" ,0,"" ,"g" ,1,0,"0" );
  1614. case(INFO_TIMETOSAMP): return set_vflgs(ap,"" ,0,"" ,"g" ,1,0,"0" );
  1615. case(INFO_MAXSAMP): return set_vflgs(ap,"" ,0,"" ,"f" ,1,0,"0" );
  1616. case(INFO_MAXSAMP2): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1617. case(INFO_LOUDCHAN): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1618. case(INFO_FINDHOLE): return set_vflgs(ap,"t" ,1,"d" ,"" ,0,0,"" );
  1619. case(INFO_DIFF): return set_vflgs(ap,"tn" ,2,"di" ,"lc" ,2,0,"00" );
  1620. case(INFO_CDIFF): return set_vflgs(ap,"tn" ,2,"di" ,"" ,0,0,"" );
  1621. case(INFO_PRNTSND): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1622. case(INFO_MUSUNITS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1623. case(MULTI_SYN): return set_vflgs(ap,"at" ,2,"di" ,"" ,0,0,"" );
  1624. case(SYNTH_WAVE): return set_vflgs(ap,"at" ,2,"Di" ,"f" ,1,0,"0" );
  1625. case(SYNTH_NOISE): return set_vflgs(ap,"a" ,1,"D" ,"f" ,1,0,"0" );
  1626. case(SYNTH_SIL): return set_vflgs(ap,"" ,0,"" ,"f" ,1,0,"0" );
  1627. case(SYNTH_SPEC): return set_vflgs(ap,"" ,0,"" ,"p" ,1,0,"0" );
  1628. case(RANDCUTS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1629. case(RANDCHUNKS): return set_vflgs(ap,"m" ,1,"d" ,"ls" ,2,0,"00" );
  1630. case(SIN_TAB): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1631. case(ACC_STREAM): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1632. case(HF_PERM1): return set_vflgs(ap,"" ,0,"" ,"msao" ,4,0,"0000" );
  1633. case(HF_PERM2): return set_vflgs(ap,"" ,0,"" ,"msao" ,4,0,"0000" );
  1634. case(DEL_PERM): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"0000" );
  1635. case(DEL_PERM2): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"0000" );
  1636. case(TWIXT):
  1637. switch(mode) {
  1638. case(TRUE_EDIT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1639. case(IN_SEQUENCE): return set_vflgs(ap,"w" ,1,"i" ,"r" ,1,0,"0" );
  1640. case(RAND_REORDER): return set_vflgs(ap,"w" ,1,"i" ,"r" ,1,0,"0" );
  1641. case(RAND_SEQUENCE): return set_vflgs(ap,"w" ,1,"i" ,"r" ,1,0,"0" );
  1642. default:
  1643. sprintf(errstr,"Unknown mode (%d) for TWIXT in set_vflgs()\n",mode);
  1644. return(PROGRAM_ERROR);
  1645. }
  1646. break;
  1647. case(SPHINX):
  1648. switch(mode) {
  1649. case(IN_SEQUENCE): return set_vflgs(ap,"w" ,1,"i" ,"r" ,1,0,"0" );
  1650. case(RAND_REORDER): return set_vflgs(ap,"w" ,1,"i" ,"r" ,1,0,"0" );
  1651. case(RAND_SEQUENCE): return set_vflgs(ap,"w" ,1,"i" ,"r" ,1,0,"0" );
  1652. default:
  1653. sprintf(errstr,"Unknown mode (%d) for SPHINX in set_vflgs()\n",mode);
  1654. return(PROGRAM_ERROR);
  1655. }
  1656. break;
  1657. //TW NEW
  1658. case(MIX_ON_GRID): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1659. case(AUTOMIX): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1660. case(NOISE_SUPRESS): return set_vflgs(ap,"" ,0,"" ,"n" ,1,0,"0" );
  1661. case(TIME_GRID): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1662. case(SEQUENCER2): return set_vflgs(ap,"" ,0,"" ,"s" ,1,1,"d" );
  1663. case(SEQUENCER): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1664. case(CONVOLVE): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1665. case(BAKTOBAK): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1666. case(ADDTOMIX): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1667. case(MIX_PAN): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1668. case(SHUDDER): return set_vflgs(ap,"" ,0,"" ,"b" ,1,0,"0" );
  1669. case(MIX_AT_STEP): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1670. case(FIND_PANPOS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1671. case(CLICK):
  1672. switch(mode) {
  1673. case(CLICK_BY_TIME): return set_vflgs(ap,"sez" ,3,"ddi" ,"t" ,1,0,"0" );
  1674. case(CLICK_BY_LINE): return set_vflgs(ap,"sez" ,3,"iii" ,"t" ,1,0,"0" );
  1675. }
  1676. break;
  1677. case(DOUBLETS): return set_vflgs(ap,"" ,0,"" ,"s" ,1,0,"0" );
  1678. case(SYLLABS): return set_vflgs(ap,"" ,0,"" ,"p" ,1,0,"0" );
  1679. case(JOIN_SEQDYN): return set_vflgs(ap,"w" ,1,"i" ,"be" ,2,0,"00" );
  1680. case(JOIN_SEQ): return set_vflgs(ap,"wm" ,2,"di" ,"be" ,2,0,"00" );
  1681. case(MAKE_VFILT): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1682. case(BATCH_EXPAND): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1683. case(MIX_MODEL): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1684. case(CYCINBETWEEN): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1685. case(ENVSYN): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1686. case(RRRR_EXTEND):
  1687. switch(mode) {
  1688. case(0): return set_vflgs(ap,"" ,0,"" ,"se" ,2,0,"00" );
  1689. case(1): return set_vflgs(ap,"" ,0,"" ,"se" ,2,0,"00" );
  1690. case(2): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1691. }
  1692. break;
  1693. case(SSSS_EXTEND): return set_vflgs(ap,"g" ,1,"d" ,"x" ,1,0,"0" );
  1694. case(HOUSE_GATE2): return set_vflgs(ap,"" ,0,"" ,"s" ,1,0,"0" );
  1695. case(GRAIN_ASSESS): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1696. case(ZCROSS_RATIO): return set_vflgs(ap,"se" ,2,"dd" ,"" ,0,0,"" );
  1697. case(GREV): return set_vflgs(ap,"" ,0,"" ,"" ,0,0,"" );
  1698. /*| | | | |v| | */
  1699. /*| |o| | |f|v| */
  1700. /*|option|p| option |variant |l|p|variant*/
  1701. /*|flags |t| list | flags |a|a|list */
  1702. /*| |c| | |g|r| */
  1703. /*| |n| | |c|a| */
  1704. /*| |t| | |n|m| */
  1705. /*| | | | |t|s| */
  1706. }
  1707. sprintf(errstr,"Unknown process %d: set_vflgs()\n",process);
  1708. return(PROGRAM_ERROR);
  1709. }
  1710. /****************************** SET_VFLGS *********************************/
  1711. int set_vflgs
  1712. (aplptr ap,char *optflags,int optcnt,char *optlist,char *varflags,int vflagcnt, int vparamcnt,char *varlist)
  1713. {
  1714. ap->option_cnt = (char) optcnt; /*RWD added cast */
  1715. if(optcnt) {
  1716. if((ap->option_list = (char *)malloc((size_t)(optcnt+1)))==NULL) {
  1717. sprintf(errstr,"INSUFFICIENT MEMORY: for option_list\n");
  1718. return(MEMORY_ERROR);
  1719. }
  1720. strcpy(ap->option_list,optlist);
  1721. if((ap->option_flags = (char *)malloc((size_t)(optcnt+1)))==NULL) {
  1722. sprintf(errstr,"INSUFFICIENT MEMORY: for option_flags\n");
  1723. return(MEMORY_ERROR);
  1724. }
  1725. strcpy(ap->option_flags,optflags);
  1726. }
  1727. ap->vflag_cnt = (char) vflagcnt;
  1728. ap->variant_param_cnt = (char) vparamcnt;
  1729. if(vflagcnt) {
  1730. if((ap->variant_list = (char *)malloc((size_t)(vflagcnt+1)))==NULL) {
  1731. sprintf(errstr,"INSUFFICIENT MEMORY: for variant_list\n");
  1732. return(MEMORY_ERROR);
  1733. }
  1734. strcpy(ap->variant_list,varlist);
  1735. if((ap->variant_flags = (char *)malloc((size_t)(vflagcnt+1)))==NULL) {
  1736. sprintf(errstr,"INSUFFICIENT MEMORY: for variant_flags\n");
  1737. return(MEMORY_ERROR);
  1738. }
  1739. strcpy(ap->variant_flags,varflags);
  1740. }
  1741. return(FINISHED);
  1742. }
  1743. /****************************** SET_PARAM_DATA *********************************/
  1744. int set_param_data(aplptr ap, int special_data,int maxparamcnt,int paramcnt,char *paramlist)
  1745. {
  1746. ap->special_data = (char)special_data;
  1747. ap->param_cnt = (char)paramcnt;
  1748. ap->max_param_cnt = (char)maxparamcnt;
  1749. if(ap->max_param_cnt>0) {
  1750. if((ap->param_list = (char *)malloc((size_t)(ap->max_param_cnt+1)))==NULL) {
  1751. sprintf(errstr,"INSUFFICIENT MEMORY: for param_list\n");
  1752. return(MEMORY_ERROR);
  1753. }
  1754. strcpy(ap->param_list,paramlist);
  1755. }
  1756. return(FINISHED);
  1757. }