libcm is a C development framework with an emphasis on audio signal processing applications.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

cmDspPgmKrTimeLineLite.c 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455
  1. //( { file_desc:"'snap' Performance analysis Simplified Time Line program." kw:[snap]}
  2. #include "cmPrefix.h"
  3. #include "cmGlobal.h"
  4. #include "cmFloatTypes.h"
  5. #include "cmRpt.h"
  6. #include "cmErr.h"
  7. #include "cmCtx.h"
  8. #include "cmMem.h"
  9. #include "cmMallocDebug.h"
  10. #include "cmLinkedHeap.h"
  11. #include "cmText.h"
  12. #include "cmFileSys.h"
  13. #include "cmSymTbl.h"
  14. #include "cmJson.h"
  15. #include "cmPrefs.h"
  16. #include "cmDspValue.h"
  17. #include "cmMsgProtocol.h"
  18. #include "cmThread.h"
  19. #include "cmUdpPort.h"
  20. #include "cmUdpNet.h"
  21. #include "cmTime.h"
  22. #include "cmAudioSys.h"
  23. #include "cmProcObj.h"
  24. #include "cmDspCtx.h"
  25. #include "cmDspClass.h"
  26. #include "cmDspSys.h"
  27. #include "cmDspPgm.h"
  28. #include "cmAudioFile.h"
  29. #include "cmProcObj.h"
  30. #include "cmProc.h"
  31. #include "cmProc3.h"
  32. #include "cmVectOpsTemplateMain.h"
  33. #include "cmVectOps.h"
  34. #include "cmDspPgmKrChain.h"
  35. //)
  36. //( { label:cmDspPgm_TimeLineLite file_desc:"Simplified score vs. the performance and generating related audio transforms." kw:[spgm] }
  37. cmDspRC_t _cmDspSysPgm_TimeLineLite(cmDspSysH_t h, void** userPtrPtr )
  38. {
  39. cmDspRC_t rc = kOkDspRC;
  40. cmCtx_t* cmCtx = cmDspSysPgmCtx(h);
  41. cmErr_t err;
  42. krRsrc_t r;
  43. //unsigned wtLoopCnt = 1; // 1=play once (-1=loop forever)
  44. //unsigned wtInitMode = 0; // initial wt mode is 'silence'
  45. //unsigned wtSmpCnt = floor(cmDspSysSampleRate(h)); // wt length == srate
  46. unsigned sfBufCnt = 7; // length of the MIDI event buffer
  47. unsigned sfMaxWndCnt = 10; // length of the score event buffer
  48. unsigned sfMinVel = 5; // ignore MIDI events below this velocity
  49. bool sfEnaMeasFl = false;
  50. double recdPlayInitAllocSecs = 10.0;
  51. double recdPlayMaxLaSecs = 2.0;
  52. double recdPlayCurLaSecs = 0.1;
  53. double recdPlayFadeRateDbPerSec = 4.0;
  54. bool apfBypassFl = false;
  55. unsigned apfModeSymId = cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"AP");
  56. double apfF0hz = 100.0;
  57. double apfQ = 1.0;
  58. double apfGain = 1.0;
  59. memset(&r,0,sizeof(r));
  60. cmErrSetup(&err,&cmCtx->rpt,"Kr TimelineLite");
  61. if( krLoadRsrc(h,&err,&r) != kOkDspRC )
  62. return rc;
  63. cmDspInst_t* ai0p = cmDspSysAllocInst(h,"AudioIn", NULL, 1, 0);
  64. cmDspInst_t* ai1p = cmDspSysAllocInst(h,"AudioIn", NULL, 1, 1);
  65. cmDspInst_t* ai2p = cmDspSysAllocInst(h,"AudioIn", NULL, 1, 2);
  66. cmDspInst_t* ai3p = cmDspSysAllocInst(h,"AudioIn", NULL, 1, 3);
  67. cmDspInst_t* mx0p = cmDspSysAllocInst( h, "AMix", NULL, 3, 2, 0.5, 0.5);
  68. cmDspInst_t* mx1p = cmDspSysAllocInst( h, "AMix", NULL, 3, 2, 0.5, 0.5);
  69. cmDspInst_t* tlp = cmDspSysAllocInst(h,"TimeLine", "tl", 2, r.tlFn, r.tlPrefixPath );
  70. cmDspInst_t* scp = cmDspSysAllocInst(h,"Score", "sc", 1, r.scFn );
  71. //cmDspInst_t* php = cmDspSysAllocInst(h,"Phasor", NULL, 1, cmDspSysSampleRate(h) );
  72. //cmDspInst_t* wtp = cmDspSysAllocInst(h,"WaveTable", NULL, 4, wtSmpCnt, wtInitMode, NULL, wtLoopCnt );
  73. cmDspInst_t* pts = cmDspSysAllocInst(h,"PortToSym", NULL, 2, "on", "off" );
  74. //cmDspInst_t* mip = cmDspSysAllocInst(h,"MidiIn", NULL, 0 );
  75. cmDspInst_t* mfp = cmDspSysAllocInst(h,"MidiFilePlay",NULL, 0 );
  76. cmDspInst_t* nmp = cmDspSysAllocInst(h,"NanoMap", NULL, 0 );
  77. cmDspInst_t* mop = cmDspSysAllocInst(h,"MidiOut", NULL, 2, r.midiDevice,r.midiOutPort);
  78. cmDspInst_t* mo2p = cmDspSysAllocInst(h,"MidiOut", NULL, 2, r.midiDevice,r.midiOutPort2);
  79. cmDspInst_t* sfp = cmDspSysAllocInst(h,"ScFol", NULL, 1, r.scFn, sfBufCnt, sfMaxWndCnt, sfMinVel, sfEnaMeasFl );
  80. cmDspInst_t* amp = cmDspSysAllocInst(h,"ActiveMeas", NULL, 1, 100 );
  81. cmDspInst_t* rpp = cmDspSysAllocInst(h,"RecdPlay", NULL, 6, 2, r.scFn, recdPlayInitAllocSecs, recdPlayMaxLaSecs, recdPlayCurLaSecs, recdPlayFadeRateDbPerSec);
  82. cmDspInst_t* modp = cmDspSysAllocInst(h,"ScMod", NULL, 2, r.modFn, "m1" );
  83. cmDspInst_t* modr = cmDspSysAllocInst(h,"ScMod", NULL, 2, r.modFn, "m1" );
  84. unsigned preGrpSymId = cmDspSysPresetRegisterGroup(h,"tl");
  85. unsigned cmpPreGrpSymId = cmDspSysPresetRegisterGroup(h,"tl_cmp");
  86. cmDspTlXform_t c0,c1;
  87. cmDspSysNewPage(h,"Controls-0");
  88. _cmDspSys_TlXformChain(h, &c0, preGrpSymId, cmpPreGrpSymId, modp, 0, 0 );
  89. cmDspSysNewPage(h,"Controls-1");
  90. _cmDspSys_TlXformChain(h, &c1, preGrpSymId, cmpPreGrpSymId, modp, 1, 1 );
  91. cmDspInst_t* apf0 = cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+0, apfQ, apfGain );
  92. cmDspInst_t* apf1 = cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+100.0, apfQ, apfGain );
  93. cmDspInst_t* apf2 = cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+200.0, apfQ, apfGain );
  94. cmDspInst_t* apf3 = cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+300.0, apfQ, apfGain );
  95. cmDspInst_t* ao0p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 2 );
  96. cmDspInst_t* ao1p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 3 );
  97. cmDspInst_t* ao2p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 4 );
  98. cmDspInst_t* ao3p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 5 );
  99. cmDspSysNewPage(h,"Main");
  100. cmDspInst_t* liveb= cmDspSysAllocInst(h,"Button", "live", 2, kCheckDuiId, 0.0 );
  101. cmDspInst_t* simb = cmDspSysAllocInst(h,"Button", "simulate",2, kCheckDuiId, 0.0 );
  102. cmDspInst_t* ainb = cmDspSysAllocInst(h,"Button", "audio in",2, kCheckDuiId, 0.0 );
  103. cmDspInst_t* measb= cmDspSysAllocInst(h,"Button", "meas", 2, kCheckDuiId, 0.0 );
  104. cmDspInst_t* onb = cmDspSysAllocInst(h,"Button", "start", 2, kButtonDuiId, 1.0 );
  105. cmDspInst_t* offb = cmDspSysAllocInst(h,"Button", "stop", 2, kButtonDuiId, 1.0 );
  106. //cmDspInst_t* prtb = cmDspSysAllocInst(h,"Button", "print", 2, kButtonDuiId, 1.0 );
  107. //cmDspInst_t* qtb = cmDspSysAllocInst(h,"Button", "quiet", 2, kButtonDuiId, 1.0 );
  108. cmDspInst_t* prp = cmDspSysAllocInst(h,"Printer", NULL, 1, ">" );
  109. cmDspInst_t* prd = cmDspSysAllocInst(h,"Printer", NULL, 1, "DYN:" );
  110. cmDspInst_t* pre = cmDspSysAllocInst(h,"Printer", NULL, 1, "EVEN:" );
  111. cmDspInst_t* prt = cmDspSysAllocInst(h,"Printer", NULL, 1, "TEMPO:");
  112. cmDspInst_t* prc = cmDspSysAllocInst(h,"Printer", NULL, 1, "COST:");
  113. //cmDspInst_t* prv = cmDspSysAllocInst(h,"Printer", NULL, 1, "Value:");
  114. // Record <-> Live switches
  115. cmDspInst_t* tlRt = cmDspSysAllocInst(h,"Router", NULL, 2, 2, 0); // time line swich
  116. //cmDspInst_t* wtRt = cmDspSysAllocInst(h,"Router", NULL, 2, 2, 0);
  117. cmDspInst_t* mfpRt = cmDspSysAllocInst(h,"Router", NULL, 2, 2, 0);
  118. cmDspInst_t* amRt = cmDspSysAllocInst(h,"Router", NULL, 2, 2, 0);
  119. cmDspInst_t* au0Sw = cmDspSysAllocInst(h,"1ofN", NULL, 2, 2, 0);
  120. cmDspInst_t* au1Sw = cmDspSysAllocInst(h,"1ofN", NULL, 2, 2, 0);
  121. cmDspInst_t* siRt = cmDspSysAllocInst(h,"Router", NULL, 2, 2, 0);
  122. cmDspInst_t* muRt = cmDspSysAllocInst(h,"Router", NULL, 2, 2, 0);
  123. cmDspInst_t* d0Rt = cmDspSysAllocInst(h,"Router", NULL, 2, 2, 0);
  124. cmDspInst_t* d1Rt = cmDspSysAllocInst(h,"Router", NULL, 2, 2, 0);
  125. cmDspInst_t* stRt = cmDspSysAllocInst(h,"Router", NULL, 2, 2, 0);
  126. cmDspSysNewColumn(h,0);
  127. cmDspInst_t* igain0 = cmDspSysAllocInst(h,"Scalar", "In Gain-0", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.0 );
  128. cmDspInst_t* igain1 = cmDspSysAllocInst(h,"Scalar", "In Gain-1", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.0 );
  129. cmDspInst_t* igain2 = cmDspSysAllocInst(h,"Scalar", "In Gain-2", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.0 );
  130. cmDspInst_t* igain3 = cmDspSysAllocInst(h,"Scalar", "In Gain-3", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.0 );
  131. cmDspInst_t* lasecs = cmDspSysAllocInst(h,"Scalar", "LA Secs", 5, kNumberDuiId, 0.0, recdPlayMaxLaSecs,0.01, recdPlayCurLaSecs );
  132. cmDspInst_t* dbpsec = cmDspSysAllocInst(h,"Scalar", "Fade dBpSec", 5, kNumberDuiId, 0.0, 24.0, 0.01, recdPlayFadeRateDbPerSec);
  133. cmDspInst_t* apfByp = cmDspSysAllocCheck( h, "APF-Bypass", 0.0 );
  134. cmDspSysNewColumn(h,0);
  135. cmDspInst_t* ogain0 = cmDspSysAllocInst(h,"Scalar", "Out Gain-0", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 );
  136. cmDspInst_t* ogain1 = cmDspSysAllocInst(h,"Scalar", "Out Gain-1", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 );
  137. cmDspInst_t* ogain2 = cmDspSysAllocInst(h,"Scalar", "Out Gain-2", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 );
  138. cmDspInst_t* ogain3 = cmDspSysAllocInst(h,"Scalar", "Out Gain-3", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 );
  139. //cmDspInst_t* scLoc = cmDspSysAllocInst(h,"Scalar", "Sc Loc", 5, kNumberDuiId, 0.0, 3000.0, 1.0, 0.0 );
  140. // Audio file recording
  141. cmDspInst_t* recdGain= cmDspSysAllocInst(h,"Scalar", "Recd Gain", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.5 );
  142. cmDspInst_t* recdChk = cmDspSysAllocInst(h,"Button", "Record", 2, kCheckDuiId, 0.0 );
  143. cmDspInst_t* recdPtS = cmDspSysAllocInst(h,"GateToSym", NULL, 2, cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"open"),cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"close"));
  144. cmDspInst_t* afop = cmDspSysAllocInst(h,"AudioFileOut",NULL, 2, r.recordDir,2);
  145. cmDspInst_t* mi0p = cmDspSysAllocInst(h,"AMeter","In 0", 0);
  146. cmDspInst_t* mi1p = cmDspSysAllocInst(h,"AMeter","In 1", 0);
  147. cmDspInst_t* mi2p = cmDspSysAllocInst(h,"AMeter","In 2", 0);
  148. cmDspInst_t* mi3p = cmDspSysAllocInst(h,"AMeter","In 3", 0);
  149. //--------------- Preset controls
  150. cmDspSysNewColumn(h,0);
  151. cmDspInst_t* preset = cmDspSysAllocInst( h, "Preset", NULL, 1, preGrpSymId );
  152. cmDspInst_t* presetLbl = cmDspSysAllocInst( h, "Text", "Preset", 1, "" );
  153. cmDspInst_t* storeBtn = cmDspSysAllocButton( h, "store", 0);
  154. cmDspInst_t* recallBtn = cmDspSysAllocButton( h, "recall", 0);
  155. cmDspSysInstallCb( h, presetLbl, "val", preset, "label",NULL);
  156. cmDspSysInstallCb( h, storeBtn, "sym", preset, "cmd", NULL );
  157. cmDspSysInstallCb( h, recallBtn, "sym", preset, "cmd", NULL );
  158. cmDspInst_t* prePath = cmDspSysAllocInst( h, "Fname", "prePath", 3, true,NULL,r.tlPrefixPath);
  159. cmDspSysNewColumn(h,0);
  160. //--------------- Recorded performance evaluation and Active Measurement related controls
  161. cmDspInst_t* clrBtn = cmDspSysAllocButton( h, "clear", 0);
  162. cmDspInst_t* prtBtn = cmDspSysAllocButton( h, "dump", 0);
  163. cmDspInst_t* mlst = cmDspSysAllocInst( h, "MsgList", NULL, 3, "meas", r.measFn, 2);
  164. cmDspInst_t* amCmd = cmDspSysAllocInst( h, "PortToSym", NULL, 2, "add", "rewind" );
  165. if((rc = cmDspSysLastRC(h)) != kOkDspRC )
  166. return rc;
  167. // Output Audio file recording.
  168. cmDspSysInstallCb(h, recdGain,"val", afop, "gain0", NULL );
  169. cmDspSysInstallCb(h, recdGain,"val", afop, "gain1", NULL );
  170. cmDspSysInstallCb(h, recdChk, "out", recdPtS, "on", NULL );
  171. cmDspSysInstallCb(h, recdChk, "out", recdPtS, "off", NULL );
  172. cmDspSysInstallCb(h, recdPtS, "out", afop, "sel", NULL );
  173. // Audio connections
  174. //cmDspSysConnectAudio(h, php, "out", wtp, "phs" ); // phs -> wt
  175. cmDspSysConnectAudio( h, ai0p, "out", mi0p, "in");
  176. cmDspSysConnectAudio( h, ai1p, "out", mi1p, "in");
  177. cmDspSysConnectAudio( h, ai2p, "out", mi2p, "in");
  178. cmDspSysConnectAudio( h, ai3p, "out", mi3p, "in");
  179. cmDspSysConnectAudio(h, ai0p, "out", mx0p, "in-0" ); // eqmix -> input mix
  180. cmDspSysConnectAudio(h, ai1p, "out", mx1p, "in-0" );
  181. cmDspSysConnectAudio(h, ai2p, "out", mx0p, "in-1" );
  182. cmDspSysConnectAudio(h, ai3p, "out", mx1p, "in-1" );
  183. cmDspSysConnectAudio(h, mx0p, "out", rpp, "in-0"); // sw -> rcdply
  184. cmDspSysConnectAudio(h, mx0p, "out", c0.kr0, "in" ); // ain -> sw
  185. cmDspSysConnectAudio(h, c0.cmp, "out", apf0, "in" );
  186. cmDspSysConnectAudio(h, c0.cmp, "out", apf2, "in" );
  187. cmDspSysConnectAudio(h, apf0, "out", ao0p, "in" );
  188. cmDspSysConnectAudio(h, apf2, "out", ao2p, "in" );
  189. cmDspSysConnectAudio(h, mx1p, "out", rpp, "in-1"); // sw -> rcdply
  190. cmDspSysConnectAudio(h, mx1p, "out", c1.kr0, "in" ); // ain -> sw
  191. cmDspSysConnectAudio(h, c1.cmp, "out", apf1, "in" ); // cmp -> mix 0
  192. cmDspSysConnectAudio(h, c1.cmp, "out", apf3, "in" ); // cmp -> mix 0
  193. cmDspSysConnectAudio(h, apf1, "out", ao1p, "in" );
  194. cmDspSysConnectAudio(h, apf3, "out", ao3p, "in" );
  195. cmDspSysConnectAudio(h, c0.cmp, "out", afop, "in0" ); // comp -> audio_file_out
  196. cmDspSysConnectAudio(h, c1.cmp, "out", afop, "in1" );
  197. //cmDspSysConnectAudio(h, ai0p, "out", afop, "in0" ); // comp -> audio_file_out
  198. //cmDspSysConnectAudio(h, ai1p, "out", afop, "in1" );
  199. //cmDspSysConnectAudio(h, ai0p, "out", ao2p, "in" ); // direct through from input to
  200. //cmDspSysConnectAudio(h, ai1p, "out", ao3p, "in" ); // output chs 2&3
  201. cmDspSysInstallCb( h, clrBtn, "sym", amp, "cmd", NULL ); // clear active meas.
  202. cmDspSysInstallCb( h, prtBtn, "sym", amp, "cmd", NULL ); // print active meas
  203. cmDspSysInstallCb( h, prtBtn, "sym", scp, "cmd", NULL );
  204. cmDspSysInstallCb( h, amCmd, "add", amp, "cmd", NULL ); // add active meas
  205. cmDspSysInstallCb( h, amCmd, "rewind", amp, "cmd", NULL ); // rewind active meas
  206. cmDspSysInstallCb( h, mlst, "loc", amp, "loc", NULL ); // recorded meas's list to active meas unit
  207. cmDspSysInstallCb( h, mlst, "typeId", amp, "type", NULL ); //
  208. cmDspSysInstallCb( h, mlst, "val", amp, "val", NULL ); //
  209. cmDspSysInstallCb( h, mlst, "cost", amp, "cst", NULL ); //
  210. cmDspSysInstallCb( h, mlst, "typeId", amCmd, "add", NULL ); //
  211. cmDspSysInstallCb( h, sfp, "out", amRt, "f-in", NULL ); // sfp-active meas router (rtr is switched by live btn)
  212. cmDspSysInstallCb( h, amRt, "f-out-0",amp, "sfloc", NULL );
  213. cmDspSysInstallCb( h, sfp, "vloc", amp, "loc", NULL ); // live meas's to active meas unit
  214. cmDspSysInstallCb( h, sfp, "vval", amp, "val", NULL ); //
  215. cmDspSysInstallCb( h, sfp, "vcost",amp, "cst", NULL ); //
  216. cmDspSysInstallCb( h, sfp, "vtyp", amp, "type", NULL ); //
  217. cmDspSysInstallCb( h, sfp, "vtyp", amCmd, "add", NULL); //
  218. // ***** delete this to prevent the score follower from driving the active-measure unit in 'live' mode
  219. cmDspSysInstallCb( h, amRt, "f-out-1",amp, "sfloc", NULL );
  220. // *****
  221. // active measure loc to xfad channel trigger
  222. cmDspSysInstallCb( h, amp, "scloc", c0.achan, "trig", NULL ); // See Also: modp.sw ->achan.trig
  223. cmDspSysInstallCb( h, amp, "scloc", c1.achan, "trig", NULL );
  224. cmDspSysInstallCb( h, amp, "even", pre, "in", NULL ); // active meas output to printers
  225. cmDspSysInstallCb( h, amp, "dyn", prd, "in", NULL );
  226. cmDspSysInstallCb( h, amp, "tempo", prt, "in", NULL );
  227. cmDspSysInstallCb( h, amp, "cost", prc, "in", NULL );
  228. // wave-table to time-line cursor
  229. //cmDspSysInstallCb( h, wtp, "fidx",tlp, "curs", NULL);
  230. cmDspSysInstallCb(h, prePath, "out", tlp, "path", NULL );
  231. // 'live' button -> live router selector switch
  232. //cmDspSysInstallCb(h, liveb, "out", wtRt, "sel", NULL );
  233. cmDspSysInstallCb(h, liveb, "out", tlRt, "sel", NULL );
  234. cmDspSysInstallCb(h, liveb, "out", mfpRt,"sel", NULL );
  235. cmDspSysInstallCb(h, liveb, "out", amRt, "sel", NULL );
  236. cmDspSysInstallCb(h, liveb, "out", au0Sw, "chidx", NULL );
  237. cmDspSysInstallCb(h, liveb, "out", au1Sw, "chidx", NULL );
  238. cmDspSysInstallCb(h, liveb, "out", measb, "in", NULL );
  239. cmDspSysInstallCb(h, measb, "out", sfp, "measfl", NULL );
  240. // 'simulate' button -> simulate router selector switch
  241. cmDspSysInstallCb(h, simb, "out", ainb, "in", NULL );
  242. cmDspSysInstallCb(h, ainb, "out", au0Sw, "chidx", NULL );
  243. cmDspSysInstallCb(h, ainb, "out", au1Sw, "chidx", NULL );
  244. cmDspSysInstallCb(h, simb, "out", siRt, "sel", NULL );
  245. cmDspSysInstallCb(h, simb, "out", muRt, "sel", NULL );
  246. cmDspSysInstallCb(h, simb, "out", d1Rt, "sel", NULL );
  247. cmDspSysInstallCb(h, simb, "out", d0Rt, "sel", NULL );
  248. cmDspSysInstallCb(h, simb, "out", stRt, "sel", NULL );
  249. // start connections
  250. cmDspSysInstallCb(h, onb, "sym", tlRt, "s-in", NULL );
  251. cmDspSysInstallCb(h, tlRt, "s-out-0",tlp, "reset", NULL );
  252. cmDspSysInstallCb(h, onb, "sym", scp, "send", NULL );
  253. cmDspSysInstallCb(h, onb, "sym", mfpRt,"s-in", NULL );
  254. cmDspSysInstallCb(h, mfpRt,"s-out-0",mfp, "sel", NULL );
  255. cmDspSysInstallCb(h, onb, "sym", pts, "on", NULL );
  256. //cmDspSysInstallCb(h, pts, "on", wtRt, "s-in", NULL );
  257. //cmDspSysInstallCb(h, wtRt,"s-out-0", wtp, "cmd", NULL );
  258. cmDspSysInstallCb(h, pts, "on", modp, "cmd", NULL );
  259. cmDspSysInstallCb(h, pts, "on", modr, "cmd", NULL );
  260. cmDspSysInstallCb(h, pts, "on", rpp, "cmd", NULL );
  261. cmDspSysInstallCb(h, onb, "sym", amCmd, "rewind",NULL );
  262. cmDspSysInstallCb(h, onb, "out", c0.achan,"reset", NULL );
  263. cmDspSysInstallCb(h, onb, "out", c1.achan,"reset", NULL );
  264. // stop connections
  265. //cmDspSysInstallCb(h, wtp, "done",offb,"in", NULL ); // 'done' from WT simulates pressing Stop btn.
  266. cmDspSysInstallCb(h, tlp, "mfn", pts, "off", NULL ); // Prevents WT start on new audio file from TL.
  267. cmDspSysInstallCb(h, offb, "sym", mfp, "sel", NULL );
  268. cmDspSysInstallCb(h, offb, "sym", pts, "off", NULL );
  269. //cmDspSysInstallCb(h, pts, "off", wtp, "cmd", NULL );
  270. cmDspSysInstallCb(h, pts, "off", modp,"cmd", NULL );
  271. cmDspSysInstallCb(h, pts, "off", modr,"cmd", NULL );
  272. cmDspSysInstallCb(h, offb, "sym", mop, "reset", NULL );
  273. cmDspSysInstallCb(h, offb, "sym", mo2p, "reset", NULL );
  274. // time-line to wave-table selection
  275. //cmDspSysInstallCb(h, tlp, "absi", wtp, "beg", NULL );
  276. //cmDspSysInstallCb(h, tlp, "aesi", wtp, "end", NULL );
  277. //cmDspSysInstallCb(h, tlp, "afn", wtp, "fn", NULL );
  278. // time-line to MIDI file player selection
  279. cmDspSysInstallCb(h, tlp, "mbsi", mfp, "bsi", NULL );
  280. cmDspSysInstallCb(h, tlp, "mesi", mfp, "esi", NULL );
  281. cmDspSysInstallCb(h, tlp, "mfn", mfp, "fn", NULL );
  282. // score to score follower - to set initial search location
  283. cmDspSysInstallCb(h, scp, "sel", sfp, "index", NULL );
  284. cmDspSysInstallCb(h, scp, "sel", modp,"reset", NULL );
  285. cmDspSysInstallCb(h, scp, "sel", modr,"reset", NULL );
  286. cmDspSysInstallCb(h, scp, "sel", rpp, "initIdx", NULL );
  287. cmDspSysInstallCb(h, scp, "sel", prp, "in", NULL );
  288. // NOTE: THIS IS A DUPLICATE OF THE scp.sel CONNECTIONS
  289. /*
  290. cmDspSysInstallCb(h, scLoc, "val", sfp, "index", NULL );
  291. cmDspSysInstallCb(h, scLoc, "val", modp,"reset", NULL );
  292. cmDspSysInstallCb(h, scLoc, "val", modr,"reset", NULL );
  293. cmDspSysInstallCb(h, scLoc, "val", rpp, "initIdx", NULL );
  294. cmDspSysInstallCb(h, scLoc, "val", prp, "in", NULL );
  295. */
  296. //cmDspSysInstallCb(h, reload,"out", modp, "reload", NULL );
  297. // MIDI file player to score follower
  298. cmDspSysInstallCb(h, mfp, "smpidx", siRt, "f-in",NULL );
  299. cmDspSysInstallCb(h, siRt, "f-out-1", sfp, "smpidx",NULL );
  300. // leave siRt.f-out-1 unconnected because it should be ignored in 'simulate mode'
  301. cmDspSysInstallCb(h, mfp, "id", muRt, "f-in", NULL );
  302. cmDspSysInstallCb(h, muRt, "f-out-1", sfp, "muid", NULL );
  303. // leave muRt.f-out-1 unconnected because it should be ignored in 'simulate mode'
  304. cmDspSysInstallCb(h, mfp, "d1", d1Rt, "f-in", NULL );
  305. cmDspSysInstallCb(h, d1Rt, "f-out-1", sfp, "d1", NULL );
  306. cmDspSysInstallCb(h, d1Rt, "f-out-1", nmp, "d1", NULL );
  307. cmDspSysInstallCb(h, nmp, "d1", mop, "d1", NULL );
  308. cmDspSysInstallCb(h, nmp, "d1", mo2p, "d1", NULL );
  309. cmDspSysInstallCb(h, mfp, "d0", d0Rt, "f-in", NULL );
  310. cmDspSysInstallCb(h, d0Rt, "f-out-1", sfp, "d0", NULL );
  311. cmDspSysInstallCb(h, d0Rt, "f-out-1", nmp, "d0", NULL );
  312. cmDspSysInstallCb(h, nmp, "d0", mop, "d0", NULL );
  313. cmDspSysInstallCb(h, nmp, "d0", mo2p, "d0", NULL );
  314. cmDspSysInstallCb(h, mfp, "status", stRt, "f-in", NULL );
  315. cmDspSysInstallCb(h, stRt, "f-out-1", sfp, "status",NULL );
  316. cmDspSysInstallCb(h, stRt, "f-out-1", nmp, "status",NULL );
  317. cmDspSysInstallCb(h, nmp, "status", mop, "status",NULL );
  318. cmDspSysInstallCb(h, nmp, "status", mo2p, "status",NULL );
  319. // MIDI input port
  320. //cmDspSysInstallCb(h, mip, "smpidx", sfp, "smpidx", NULL );
  321. //cmDspSysInstallCb(h, mip, "d1", sfp, "d1", NULL );
  322. //cmDspSysInstallCb(h, mip, "d0", sfp, "d0", NULL );
  323. //cmDspSysInstallCb(h, mip, "status", sfp, "status", NULL );
  324. // score follower to recd_play,modulator and printers
  325. //cmDspSysInstallCb(h, sfp, "out", rpp, "index", NULL );
  326. cmDspSysInstallCb(h, sfp, "out", modp, "index", NULL );
  327. //cmDspSysInstallCb(h, sfp, "out", modr, "index", NULL );
  328. cmDspSysInstallCb(h, sfp, "recent", prp, "in", NULL ); // report 'recent' but only act on 'max' loc index
  329. //cmDspSysInstallCb(h, prtb, "sym", sfp, "cmd", NULL );
  330. //cmDspSysInstallCb(h, qtb, "sym", sfp, "cmd", NULL );
  331. cmDspSysInstallCb( h, lasecs, "val", rpp, "curla", NULL ); // recd/play control
  332. cmDspSysInstallCb( h, dbpsec, "val", rpp, "frate", NULL );
  333. cmDspSysInstallCb(h, igain0, "val", ai0p, "gain", NULL ); // input gain control
  334. cmDspSysInstallCb(h, igain1, "val", ai1p, "gain", NULL );
  335. cmDspSysInstallCb(h, igain2, "val", ai2p, "gain", NULL ); // input gain control
  336. cmDspSysInstallCb(h, igain3, "val", ai3p, "gain", NULL );
  337. cmDspSysInstallCb(h, apfByp, "out", apf0, "bypass", NULL ); // APF bypass
  338. cmDspSysInstallCb(h, apfByp, "out", apf1, "bypass", NULL ); //
  339. cmDspSysInstallCb(h, apfByp, "out", apf2, "bypass", NULL ); //
  340. cmDspSysInstallCb(h, apfByp, "out", apf3, "bypass", NULL ); //
  341. cmDspSysInstallCb(h, ogain0, "val", ao0p, "gain", NULL ); // output gain control
  342. cmDspSysInstallCb(h, ogain1, "val", ao1p, "gain", NULL );
  343. cmDspSysInstallCb(h, ogain2, "val", ao2p, "gain", NULL );
  344. cmDspSysInstallCb(h, ogain3, "val", ao3p, "gain", NULL );
  345. return rc;
  346. }
  347. //------------------------------------------------------------------------------
  348. //)