Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 40.50 KB | None | 0 0
  1. <CsoundSynthesizer>
  2. <CsOptions>
  3. -odac
  4. </CsOptions>
  5. <CsInstruments>
  6. ; Initialize the global variables.
  7. ksmps = 128
  8. sr = 44100
  9. 0dbfs = 1
  10. ;nchnls = 8
  11. nchnls = 2
  12. ;===================================================================================================================
  13.  
  14. ; krate fluidsynth preset selection
  15. opcode fluidProgramSelect_k, 0, kkkkk
  16. keng, kchn, ksf2, kbnk, kpre xin
  17. igoto skipInit
  18. doInit:
  19. fluidProgramSelect i(keng), i(kchn), i(ksf2), i(kbnk), i(kpre)
  20. reinit doInit
  21. rireturn
  22. skipInit:
  23. endop
  24. ;===================================================================================================================
  25.  
  26. giMelodyEngine fluidEngine
  27. giMultiEngine fluidEngine
  28. giChordEngine fluidEngine
  29. giTexturalEngine fluidEngine
  30. gkFull = 0
  31.  
  32. gkDryProbabilityArrayMelody[] init 100
  33. gkDryProbabilityArrayMulti[] init 100
  34. gkDryProbabilityArrayChord[] init 100
  35.  
  36. gkDelayProbabilityArrayMelody[] init 100
  37. gkDelayProbabilityArrayMulti[] init 100
  38. gkDelayProbabilityArrayChord[] init 100
  39.  
  40. gkArpProbabilityArrayMelody[] init 100
  41. gkArpProbabilityArrayMulti[] init 100
  42. gkArpProbabilityArrayChord[] init 100
  43.  
  44. gkQuantizeProbabilityArrayMelody[] init 100
  45. gkQuantizeProbabilityArrayMulti[] init 100
  46. gkQuantizeProbabilityArrayChord[] init 100
  47.  
  48. gkFinalPassthroughProbabilityArray[] init 100
  49.  
  50. gkHalfArray[] init 2
  51. gkHalfDiffArray[] init 2
  52.  
  53. gkThirdArray[] init 3
  54. gkThirdDiffArray[] init 3
  55.  
  56. gkQuarterArray[] init 4
  57. gkQuarterDiffArray[] init 4
  58.  
  59.  
  60. gkEighthArray[] init 8
  61. gkEighthDiffArray[] init 8
  62.  
  63. gkTwelthArray[] init 12
  64. gkTwelthDiffArray[] init 12
  65.  
  66. gkSixteenthArray[] init 16
  67. gkSixteenthDiffArray[] init 16
  68.  
  69. gkThirtysecondArray[] init 32
  70. gkThirtysecondDiffArray[] init 32
  71.  
  72.  
  73. gaLeft = 0
  74. gaRight = 0
  75. gaSummed = 0
  76. gaConvolvedL = 0
  77. gaConvolvedR = 0
  78. gaOutputL init 0
  79. gaOutputR init 0
  80.  
  81.  
  82. gaOutOne init 0
  83. gaOutTwo init 0
  84.  
  85. gaOutThree init 0
  86. gaOutFour init 0
  87.  
  88. gaOutFive init 0
  89. gaOutSix init 0
  90.  
  91. gaOutSeven init 0
  92. gaOutEight init 0
  93.  
  94. massign 1, -1
  95. ;===================================================================================================================
  96.  
  97. instr Initialise
  98.  
  99. giMelodySoundfont fluidLoad "/Users/haysholladay/KALIDE_DEMO/AudioEngine/KALIDE_nano_banks2lighter.sf2", giMelodyEngine, 1
  100. giMultiSoundfont fluidLoad "/Users/haysholladay/KALIDE_DEMO/AudioEngine/KALIDE_nano_banks2lighter.sf2", giMultiEngine, 1
  101. giChordSoundfont fluidLoad "/Users/haysholladay/KALIDE_DEMO/AudioEngine/KALIDE_nano_banks2lighter.sf2", giChordEngine, 1
  102. giTexturalSoundfont fluidLoad "/Users/haysholladay/KALIDE_DEMO/AudioEngine/textures.sf2", giTexturalEngine, 1
  103. fluidProgramSelect giMelodyEngine, 1, giMelodySoundfont, 0, 0
  104. fluidProgramSelect giMultiEngine, 1, giMultiSoundfont, 0, 0
  105. fluidProgramSelect giChordEngine, 1, giChordSoundfont, 0, 0
  106. fluidProgramSelect giTexturalEngine, 1, giTexturalSoundfont, 0, 0
  107. kCounter init 0
  108. fillProbs:
  109. if(kCounter < 50) then
  110. kVal = 1
  111. else
  112. kVal = 0
  113. endif
  114. gkDryProbabilityArrayMelody[kCounter] = kVal
  115. gkDryProbabilityArrayMulti[kCounter] = kVal
  116. gkDryProbabilityArrayChord[kCounter] = kVal
  117. gkDelayProbabilityArrayMelody[kCounter] = kVal
  118. gkDelayProbabilityArrayMulti[kCounter] = kVal
  119. gkDelayProbabilityArrayChord[kCounter] = kVal
  120. gkArpProbabilityArrayMelody[kCounter] = kVal
  121. gkArpProbabilityArrayMulti[kCounter] = kVal
  122. gkArpProbabilityArrayChord[kCounter] = kVal
  123. gkQuantizeProbabilityArrayMelody[kCounter] = kVal
  124. gkQuantizeProbabilityArrayMulti[kCounter] = kVal
  125. gkQuantizeProbabilityArrayChord[kCounter] = kVal
  126. loop_lt kCounter, 1, 99, fillProbs
  127.  
  128. kCounter = 0
  129. fillFinal:
  130. gkFinalPassthroughProbabilityArray[kCounter] = 1
  131. loop_lt kCounter, 1, 99, fillFinal
  132.  
  133. iPos init 0
  134. kBpm = chnget:k("bpm")
  135.  
  136. gkBeatLen = 60/kBpm
  137. gkFull = gkBeatLen
  138. gkHalfArray[0] = 0
  139. gkHalfArray[1] = gkBeatLen / 2
  140. kCounter = 0
  141. fillThird:
  142. gkThirdArray[kCounter] = (gkBeatLen / 3) * kCounter
  143. loop_lt kCounter, 1, 2, fillThird
  144. kCounter = 0
  145. fillQuarter:
  146. gkQuarterArray[kCounter] = (gkBeatLen / 4) * kCounter
  147. loop_lt kCounter, 1, 3, fillQuarter
  148. kCounter = 0
  149. fillEighth:
  150. gkEighthArray[kCounter] = (gkBeatLen / 8) * kCounter
  151. loop_lt kCounter, 1, 7, fillEighth
  152. kCounter = 0
  153. fillTwelth:
  154. gkTwelthArray[kCounter] = (gkBeatLen / 12) * kCounter
  155. loop_lt kCounter, 1, 11, fillTwelth
  156. kCounter = 0
  157. fillSixteenth:
  158. gkSixteenthArray[kCounter] = (gkBeatLen / 16) * kCounter
  159. loop_lt kCounter, 1, 15, fillSixteenth
  160. kCounter = 0
  161. fillThirtysecond:
  162. gkThirtysecondArray[kCounter] = (gkBeatLen / 32) * kCounter
  163. loop_lt kCounter, 1, 31, fillThirtysecond
  164. turnon "DelayLeft"
  165. turnon "DelayRight"
  166. turnon "MelodyPresetSelector"
  167. turnon "MelodyCycleListener"
  168. turnon "MultiPresetSelector"
  169. turnon "MultiCycleListener"
  170. turnon "ChordPresetSelector"
  171. turnon "ChordCycleListener"
  172. turnon "TexturalPresetSelector"
  173. turnon "FluidListener"
  174. turnon "DryProbabilityListener"
  175. turnon "DelayProbabilityListener"
  176. turnon "ArpProbabilityListener"
  177. turnon "QuantizeProbabilityListener"
  178. turnon "ConvolutionListener"
  179. turnon "FinalProbabilityListener"
  180. turnon "TexturePlayer"
  181. turnon "TextureListener"
  182. turnon "SignalOutput"
  183.  
  184.  
  185. Sdefault = "/Users/haysholladay/KALIDE_DEMO/AudioEngine/IRs/ir8_gym.wav"
  186. SdefaultScore sprintfk {{i9999 0 -1 "%s"}}, Sdefault
  187. scoreline SdefaultScore, 1
  188.  
  189. turnoff
  190. endin
  191.  
  192. ;=====================================================================================================================
  193.  
  194. instr MelodyPresetSelector
  195. if((changed:k(chnget:k("melodyBankIndex")) == 1) || (changed:k(chnget:k("melodyPresetIndex")) == 1)) then
  196. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("melodyBankIndex"), chnget:k("melodyPresetIndex") - 1
  197. ;event "i", "MelSelectInit", 0, 1, chnget:k("melodyBankIndex") - 1, chnget:k("melodyPresetIndex") - 1
  198. endif
  199. endin
  200.  
  201. /*instr MelSelectInit
  202. iBank = p4
  203. iPre = p5
  204. fluidProgramSelect giMelodyEngine, 1, giMelodySoundfont, iBank, iPre
  205. endin*/
  206. ;===================================================================================================================
  207.  
  208. instr MultiPresetSelector
  209. if((changed:k(chnget:k("multiBankIndex")) == 1) || (changed:k(chnget:k("multiPresetIndex")) == 1)) then
  210. fluidProgramSelect_k k(giMultiEngine), k(1), k(giMultiSoundfont), chnget:k("multiBankIndex"), chnget:k("multiPresetIndex") - 1
  211. ;event "i", "MulSelectInit", 0, 1, chnget:k("multiBankIndex") - 1, chnget:k("multiPresetIndex") - 1
  212. endif
  213. endin
  214.  
  215. /*instr MulSelectInit
  216. iBank = p4
  217. iPre = p5
  218. fluidProgramSelect giMultiEngine, 2, giMultiSoundfont, iBank, iPre
  219. endin*/
  220. ;===================================================================================================================
  221.  
  222. instr ChordPresetSelector
  223. if((changed:k(chnget:k("chordBankIndex")) == 1) || (changed:k(chnget:k("chordPresetIndex")) == 1)) then
  224. fluidProgramSelect_k k(giChordEngine), k(1), k(giChordSoundfont), chnget:k("chordBankIndex"), chnget:k("chordPresetIndex") - 1
  225. endif
  226. endin
  227.  
  228. ;===================================================================================================================
  229.  
  230. instr TexturalPresetSelector
  231. if(changed:k(chnget:k("texturePreset")) == 1) then
  232.  
  233. fluidProgramSelect_k k(giTexturalEngine), k(1), k(giTexturalSoundfont), k(0), chnget:k("texturePreset") - 1
  234.  
  235. endif
  236. endin
  237.  
  238. ;===================================================================================================================
  239.  
  240. instr ConvolutionListener
  241. kCounter init 1
  242. if(changed(chnget:S("convolutionSelector")) == 1) then
  243. Sconvolution = chnget:S("convolutionSelector")
  244. kDelimiter strindexk Sconvolution, "."
  245. kStrLen strlenk Sconvolution
  246. Sextension strsubk Sconvolution, kDelimiter + 1, kStrLen
  247. kExtensionComparison strcmpk Sextension, "wav"
  248. kComparison strcmpk Sconvolution, {{}}
  249. if((kComparison != 0) && (kExtensionComparison == 0)) then
  250. SkillInstance sprintfk {{i-9999 0 0.1 "%s"}}, Sconvolution
  251. scoreline SkillInstance, kCounter
  252. SconvolutionTrigger sprintfk {{i9999 0 -1 "%s"}}, Sconvolution
  253. scoreline SconvolutionTrigger, kCounter
  254. endif
  255. kCounter += 1
  256. endif
  257. endin
  258.  
  259. ;===================================================================================================================
  260.  
  261. instr MelodyCycleListener
  262. kCounter init 0
  263. kCurrentPreset init 0
  264. if(changed:k(chnget:k("melodyCycle")) == 1) then
  265. if(chnget:k("melodyCycle") == 1) then
  266. kCounter = 0
  267. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("melodyBankIndex"), (kCurrentPreset + kCounter) % 12
  268. endif
  269. endif
  270. if chnget:k("melodyCycle") == 2 then
  271. ;printk2 kCurrentPreset
  272. if(metro(1/chnget:k("melodyCycleDuration")) == 1) then
  273. kMode = chnget:k("melodyCycleMode")
  274. if(changed:k(chnget:k("melodyCycleMode")) == 1) then
  275. kCounter = 0
  276. endif
  277. kCurrentPreset = (chnget:k("melodyPresetIndex") + kCounter) % 12
  278. if(kMode == 1) then
  279. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("melodyBankIndex"), kCurrentPreset
  280. kCounter += 1
  281. elseif(kMode == 2) then
  282. if(kCurrentPreset < 0) then
  283. kCurrentPreset = 11 - kCurrentPreset
  284. endif
  285.  
  286. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("melodyBankIndex"), kCurrentPreset
  287. kCounter -= 1
  288. elseif(kMode == 3) then
  289. kCurrentPreset = chnget:k("melodyPresetIndex") + kCounter
  290.  
  291. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("melodyBankIndex"), kCurrentPreset
  292. kCounter += 2
  293. elseif(kMode == 4) then
  294. if(kCurrentPreset < 0) then
  295. kCurrentPreset = 12 - kCurrentPreset
  296. endif
  297. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("melodyBankIndex"), kCurrentPreset
  298. kCounter -= 2
  299. endif
  300. endif
  301. endif
  302. endin
  303.  
  304. ;===================================================================================================================
  305.  
  306. instr MultiCycleListener
  307. kCounter init 0
  308. kCurrentPreset init 0
  309. if(changed:k(chnget:k("multiCycle")) == 1) then
  310. if(chnget:k("multiCycle") == 1) then
  311. kCounter = 0
  312. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("multiBankIndex"), (kCurrentPreset + kCounter) % 12
  313. endif
  314. endif
  315. if chnget:k("multiCycle") == 2 then
  316. ;printk2 kCurrentPreset
  317. if(metro(1/chnget:k("multiCycleDuration")) == 1) then
  318. kMode = chnget:k("multiCycleMode")
  319. if(changed:k(chnget:k("multiCycleMode")) == 1) then
  320. kCounter = 0
  321. endif
  322. kCurrentPreset = (chnget:k("multiPresetIndex") + kCounter) % 12
  323. if(kMode == 1) then
  324. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("multiBankIndex"), kCurrentPreset
  325. kCounter += 1
  326. elseif(kMode == 2) then
  327. if(kCurrentPreset < 0) then
  328. kCurrentPreset = 11 + kCurrentPreset
  329. endif
  330.  
  331. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("multiBankIndex"), kCurrentPreset
  332. kCounter -= 1
  333. elseif(kMode == 3) then
  334. kCurrentPreset = chnget:k("multiPresetIndex") + kCounter
  335.  
  336. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("multiBankIndex"), kCurrentPreset
  337. kCounter += 2
  338. elseif(kMode == 4) then
  339. if(kCurrentPreset < 0) then
  340. kCurrentPreset = 11 + kCurrentPreset
  341. endif
  342. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("multiBankIndex"), kCurrentPreset
  343. kCounter -= 2
  344. endif
  345. endif
  346. endif
  347. endin
  348.  
  349. ;===================================================================================================================
  350.  
  351. instr ChordCycleListener
  352. kCounter init 0
  353. kCurrentPreset init 0
  354. if(changed:k(chnget:k("chordCycle")) == 1) then
  355. if(chnget:k("chordCycle") == 1) then
  356. kCounter = 0
  357. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("chordBankIndex"), (kCurrentPreset + kCounter) % 12
  358. endif
  359. endif
  360. if chnget:k("chordCycle") == 2 then
  361. ;printk2 kCurrentPreset
  362. if(metro(1/chnget:k("chordCycleDuration")) == 1) then
  363. kMode = chnget:k("chordCycleMode")
  364. if(changed:k(chnget:k("chordCycleMode")) == 1) then
  365. kCounter = 0
  366. endif
  367. kCurrentPreset = (chnget:k("chordPresetIndex") + kCounter) % 12
  368. if(kMode == 1) then
  369. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("chordBankIndex"), kCurrentPreset
  370. kCounter += 1
  371. elseif(kMode == 2) then
  372. if(kCurrentPreset < 0) then
  373. kCurrentPreset = 11 + kCurrentPreset
  374. endif
  375.  
  376. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("chordBankIndex"), kCurrentPreset
  377. kCounter -= 1
  378. elseif(kMode == 3) then
  379. kCurrentPreset = chnget:k("chordPresetIndex") + kCounter
  380.  
  381. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("chordBankIndex"), kCurrentPreset
  382. kCounter += 2
  383. elseif(kMode == 4) then
  384. if(kCurrentPreset < 0) then
  385. kCurrentPreset = 11 + kCurrentPreset
  386. endif
  387. fluidProgramSelect_k k(giMelodyEngine), k(1), k(giMelodySoundfont), chnget:k("chordBankIndex"), kCurrentPreset
  388. kCounter -= 2
  389. endif
  390. endif
  391. endif
  392. endin
  393.  
  394. ;===================================================================================================================
  395.  
  396.  
  397. instr DryProbabilityListener
  398. if(changed:k(chnget:k("dryProbabilityMelody")) == 1) then
  399. kCounter = 0
  400. kValue = chnget:k("dryProbabilityMelody")
  401. fillMelodyArray:
  402. if(kCounter < kValue) then
  403. kState = 1
  404. else
  405. kState = 0
  406. endif
  407. gkDryProbabilityArrayMelody[kCounter] = kState
  408. loop_lt kCounter, 1, 99, fillMelodyArray
  409. endif
  410.  
  411. if(changed:k(chnget:k("dryProbabilityMulti")) == 1) then
  412. kCounter = 0
  413. kValue = chnget:k("dryProbabilityMulti")
  414. fillMultiArray:
  415. if(kCounter < kValue) then
  416. kState = 1
  417. else
  418. kState = 0
  419. endif
  420. gkDryProbabilityArrayMulti[kCounter] = kState
  421. loop_lt kCounter, 1, 99, fillMultiArray
  422. endif
  423.  
  424. if(changed:k(chnget:k("dryProbabilityChord")) == 1) then
  425. kCounter = 0
  426. kValue = chnget:k("dryProbabilityChord")
  427. fillChordArray:
  428. if(kCounter < kValue) then
  429. kState = 1
  430. else
  431. kState = 0
  432. endif
  433. gkDryProbabilityArrayChord[kCounter] = kState
  434. loop_lt kCounter, 1, 99, fillChordArray
  435. endif
  436. endin
  437.  
  438. ;===================================================================================================================
  439.  
  440. instr DelayProbabilityListener
  441. if(changed:k(chnget:k("delayProbabilityMelody")) == 1) then
  442. kCounter = 0
  443. kValue = chnget:k("delayProbabilityMelody")
  444. fillMelodyArray:
  445. if(kCounter < kValue) then
  446. kState = 1
  447. else
  448. kState = 0
  449. endif
  450. gkDelayProbabilityArrayMelody[kCounter] = kState
  451. loop_lt kCounter, 1, 99, fillMelodyArray
  452. endif
  453.  
  454. if(changed:k(chnget:k("delayProbabilityMulti")) == 1) then
  455. kCounter = 0
  456. kValue = chnget:k("delayProbabilityMulti")
  457. fillMultiArray:
  458. if(kCounter < kValue) then
  459. kState = 1
  460. else
  461. kState = 0
  462. endif
  463. gkDelayProbabilityArrayMulti[kCounter] = kState
  464. loop_lt kCounter, 1, 99, fillMultiArray
  465. endif
  466.  
  467. if(changed:k(chnget:k("delayProbabilityChord")) == 1) then
  468. kCounter = 0
  469. kValue = chnget:k("delayProbabilityChord")
  470. fillChordArray:
  471. if(kCounter < kValue) then
  472. kState = 1
  473. else
  474. kState = 0
  475. endif
  476. gkDelayProbabilityArrayChord[kCounter] = kState
  477. loop_lt kCounter, 1, 99, fillChordArray
  478. endif
  479. endin
  480.  
  481. ;===================================================================================================================
  482.  
  483. instr ArpProbabilityListener
  484. if(changed:k(chnget:k("arpProbabilityMelody")) == 1) then
  485. kCounter = 0
  486. kValue = chnget:k("arpProbabilityMelody")
  487. fillMelodyArray:
  488. if(kCounter < kValue) then
  489. kState = 1
  490. else
  491. kState = 0
  492. endif
  493. gkArpProbabilityArrayMelody[kCounter] = kState
  494. loop_lt kCounter, 1, 99, fillMelodyArray
  495. endif
  496. if(changed:k(chnget:k("arpProbabilityMulti")) == 1) then
  497. kCounter = 0
  498. kValue = chnget:k("arpProbabilityMulti")
  499. fillMultiArray:
  500. if(kCounter < kValue) then
  501. kState = 1
  502. else
  503. kState = 0
  504. endif
  505. gkArpProbabilityArrayMulti[kCounter] = kState
  506. loop_lt kCounter, 1, 99, fillMultiArray
  507. endif
  508. if(changed:k(chnget:k("arpProbabilityChord")) == 1) then
  509. kCounter = 0
  510. kValue = chnget:k("arpProbabilityChord")
  511. fillChordArray:
  512. if(kCounter < kValue) then
  513. kState = 1
  514. else
  515. kState = 0
  516. endif
  517. gkArpProbabilityArrayChord[kCounter] = kState
  518. loop_lt kCounter, 1, 99, fillChordArray
  519. endif
  520. endin
  521. ;===================================================================================================================
  522.  
  523. instr QuantizeProbabilityListener
  524. if(changed:k(chnget:k("dryQuantizeProbabilityMelody")) == 1) then
  525. kCounter = 0
  526. kValue = chnget:k("dryQuantizeProbabilityMelody")
  527. fillMelodyArray:
  528. if(kCounter < kValue) then
  529. kState = 1
  530. else
  531. kState = 0
  532. endif
  533. gkQuantizeProbabilityArrayMelody[kCounter] = kState
  534. loop_lt kCounter, 1, 99, fillMelodyArray
  535. endif
  536. if(changed:k(chnget:k("dryQuantizeProbabilityMulti")) == 1) then
  537. kCounter = 0
  538. kValue = chnget:k("dryQuantizeProbabilityMulti")
  539. fillMultiArray:
  540. if(kCounter < kValue) then
  541. kState = 1
  542. else
  543. kState = 0
  544. endif
  545. gkQuantizeProbabilityArrayMulti[kCounter] = kState
  546. loop_lt kCounter, 1, 99, fillMultiArray
  547. endif
  548. if(changed:k(chnget:k("dryQuantizeProbabilityChord")) == 1) then
  549. kCounter = 0
  550. kValue = chnget:k("dryQuantizeProbabilityChord")
  551. fillChordArray:
  552. if(kCounter < kValue) then
  553. kState = 1
  554. else
  555. kState = 0
  556. endif
  557. gkQuantizeProbabilityArrayChord[kCounter] = kState
  558. loop_lt kCounter, 1, 99, fillChordArray
  559. endif
  560. endin
  561.  
  562. ;===================================================================================================================
  563.  
  564. instr FinalProbabilityListener
  565. if(changed:k(chnget:k("finalProbability")) == 1) then
  566. kCounter = 0
  567. kValue = chnget:k("finalProbability")
  568. fillFinalArray:
  569. if(kCounter < kValue) then
  570. kState = 1
  571. else
  572. kState = 0
  573. endif
  574. gkFinalPassthroughProbabilityArray[kCounter] = kState
  575. loop_lt kCounter, 1, 99, fillFinalArray
  576. endif
  577. endin
  578.  
  579. ;===================================================================================================================
  580.  
  581. instr 1
  582. kSoundfontChoice = p7
  583. kSlowdownAmt = chnget:k("slowdownAmt")
  584. if(kSlowdownAmt == 11) then
  585. kSlowdownAmt = 1
  586. else
  587. kSlowdownAmt /= 10
  588. kSlowdownAmt += 1
  589. endif
  590.  
  591. kVelocity = p6
  592. ;kVelocity = 100
  593. kOctaveAdd = chnget:k("octaveAdder")
  594. if(chnget:k("minVelocity") > kVelocity) then
  595. kVelocityCheck = 0
  596. else
  597. kVelocityCheck = 1
  598. endif
  599.  
  600. kLength = p3
  601. if(chnget:k("minLength") > kLength) then
  602. kLengthCheck = 0
  603. else
  604. kLengthCheck = 1
  605. endif
  606.  
  607. if(p7 == 3) then
  608. ;event "i", "TexturePlayer", 3, p3, p4, p6, p7
  609. printk2 100
  610. elseif((kVelocityCheck == 1) && (kLengthCheck == 1)) then
  611. kRandom random 1, 100
  612. if(p7 == 0) then
  613. kBool = gkDryProbabilityArrayMelody[int(kRandom)]
  614. kMin = chnget:k("dryMinMelody")
  615. kMax = chnget:k("dryMaxMelody")
  616. elseif(p7 == 1) then
  617. kBool = gkDryProbabilityArrayMulti[int(kRandom)]
  618. kMin = chnget:k("dryMinMulti")
  619. kMax = chnget:k("dryMaxMulti")
  620. elseif(p7 == 2) then
  621. kBool = gkDryProbabilityArrayChord[int(kRandom)]
  622. kMin = chnget:k("dryMinChord")
  623. kMax = chnget:k("dryMaxChord")
  624. endif
  625. kStartTime = p2 * kSlowdownAmt
  626. kCurrentTime times
  627. kStartTime -= kCurrentTime
  628. kNote = p4
  629. if(kBool == 1) then
  630. if((kNote > kMin) && (kNote < kMax)) then
  631. event "i", "DryHandler", kStartTime, kLength * kSlowdownAmt, kNote, p5, kVelocity, p7
  632. endif
  633. if(kOctaveAdd != 0) then
  634. event "i", "DryHandler", kStartTime, kLength * kSlowdownAmt, kNote + 12 * kOctaveAdd, p5, kVelocity, p7
  635. endif
  636. endif
  637.  
  638. kRandom random 1, 100
  639. if(p7 == 0) then
  640. kBool = gkDelayProbabilityArrayMelody[int(kRandom)]
  641. kMin = chnget:k("delayMinMelody")
  642. kMax = chnget:k("delayMaxMelody")
  643. elseif(p7 == 1) then
  644. kBool = gkDelayProbabilityArrayMulti[int(kRandom)]
  645. kMin = chnget:k("delayMinMulti")
  646. kMax = chnget:k("delayMaxMulti")
  647. elseif(p7 == 2) then
  648. kBool = gkDelayProbabilityArrayChord[int(kRandom)]
  649. kMin = chnget:k("delayMinChord")
  650. kMax = chnget:k("delayMaxChord")
  651. endif
  652. if(kBool == 1) then
  653. if((kNote > kMin) && (kNote < kMax)) then
  654. event "i", "DelayHandler", kStartTime, kLength * kSlowdownAmt, kNote, p5, kVelocity, p7
  655. endif
  656. if(kOctaveAdd != 0) then
  657. event "i", "DelayHandler", kStartTime, kLength * kSlowdownAmt, kNote + 12 * kOctaveAdd, p5, kVelocity, p7
  658. endif
  659. endif
  660.  
  661. kRandom random 1, 100
  662. if(p7 == 0) then
  663. kBool = gkArpProbabilityArrayMelody[int(kRandom)]
  664. kMin = chnget:k("arpMinMelody")
  665. kMax = chnget:k("arpMaxMelody")
  666. elseif(p7 == 1) then
  667. kBool = gkArpProbabilityArrayMulti[int(kRandom)]
  668. kMin = chnget:k("arpMinMulti")
  669. kMax = chnget:k("arpMaxMulti")
  670. elseif(p7 == 2) then
  671. kBool = gkArpProbabilityArrayChord[int(kRandom)]
  672. kMin = chnget:k("arpMinChord")
  673. kMax = chnget:k("arpMaxChord")
  674. endif
  675. if(kBool == 1) then
  676. if((kMin < kNote) && (kMax > kNote)) then
  677. event "i", "ArpHandler", kStartTime, kLength * kSlowdownAmt, kNote, p5, kVelocity, p7
  678. endif
  679. if(kOctaveAdd != 0) then
  680. event "i", "ArpHandler", kStartTime, kLength * kSlowdownAmt, kNote + 12 * kOctaveAdd, kVelocity, p7
  681. endif
  682. endif
  683. endif
  684. turnoff
  685. endin
  686.  
  687. ;===================================================================================================================
  688.  
  689. instr DryHandler
  690. kSoundfontChoice = p7
  691. kBeatLength = 60/p5
  692. kRandom random 1, 100
  693. if(p7 == 0) then
  694. kTimeShift = chnget:k("dryTimeShiftMelody")
  695. kInterval = chnget:k("dryQuantizeStepMelody")
  696. kExtension = chnget:k("dryNoteExtensionMelody")
  697. kBool = gkQuantizeProbabilityArrayMelody[int(kRandom)]
  698. kVelocityScaler = chnget:k("dryVelocityMelody")
  699. elseif(p7 == 1) then
  700. kTimeShift = chnget:k("dryTimeShiftMulti")
  701. kInterval = chnget:k("dryQuantizeStepMulti")
  702. kExtension = chnget:k("dryNoteExtensionMulti")
  703. kBool = gkQuantizeProbabilityArrayMulti[int(kRandom)]
  704. kVelocityScaler = chnget:k("dryVelocityMulti")
  705. elseif(p7 == 2) then
  706. kTimeShift = chnget:k("dryTimeShiftChord")
  707. kInterval = chnget:k("dryQuantizeStepChord")
  708. kExtension = chnget:k("dryNoteExtensionChord")
  709. kBool = gkQuantizeProbabilityArrayChord[int(kRandom)]
  710. kVelocityScaler = chnget:k("dryVelocityChord")
  711. endif
  712. if(kBool == 1) then
  713. kDelta = p2/kBeatLength
  714. kDelta -= int(kDelta)
  715. if(kInterval == 0) then
  716. kQuantized = kDelta
  717. elseif(kInterval == 1) then
  718. kIndex = 0
  719. halfDiffs:
  720. gkHalfDiffArray[kIndex] = kDelta - gkHalfArray[kIndex]
  721. loop_lt kIndex, 1, 1, halfDiffs
  722. kQuantized minarray gkHalfDiffArray
  723. elseif(kInterval == 2) then
  724. kIndex = 0
  725. thirdDiffs:
  726. gkThirdDiffArray[kIndex] = kDelta - gkThirdArray[kIndex]
  727. loop_lt kIndex, 1, 2, thirdDiffs
  728. kQuantized minarray gkThirdDiffArray
  729. elseif(kInterval == 3) then
  730. kIndex = 0
  731. quarterDiffs:
  732. gkQuarterDiffArray[kIndex] = kDelta - gkQuarterArray[kIndex]
  733. loop_lt kIndex, 1, 3, quarterDiffs
  734. kQuantized minarray gkQuarterDiffArray
  735. elseif(kInterval == 4) then
  736. kIndex = 0
  737. eighthDiffs:
  738. gkEighthDiffArray[kIndex] = kDelta - gkEighthArray[kIndex]
  739. loop_lt kIndex, 1, 7, eighthDiffs
  740. kQuantized minarray gkEighthDiffArray
  741. elseif(kInterval == 5) then
  742. kIndex = 0
  743. twelthDiffs:
  744. gkTwelthDiffArray[kIndex] = kDelta - gkTwelthArray[kIndex]
  745. loop_lt kIndex, 1, 11, twelthDiffs
  746. kQuantized minarray gkTwelthDiffArray
  747. elseif(kInterval == 6) then
  748. kIndex = 0
  749. sixteenthDiffs:
  750. gkSixteenthDiffArray[kIndex] = kDelta - gkSixteenthArray[kIndex]
  751. loop_lt kIndex, 1, 15, sixteenthDiffs
  752. kQuantized minarray gkSixteenthDiffArray
  753. elseif(kInterval == 7) then
  754. kIndex = 0
  755. thirtysecondDiffs:
  756. gkThirtysecondDiffArray[kIndex] = kDelta - gkThirtysecondArray[kIndex]
  757. loop_lt kIndex, 1, 31, thirtysecondDiffs
  758. endif
  759. endif
  760. kPercent = p3/100
  761. kPercent *= kExtension
  762. kNoteLength = p3 + kPercent
  763. kVelocity = p6 * 127
  764. kVelocity -= kVelocityScaler
  765. kVelocity /= 127
  766. if(kBool == 1) then
  767. event "i", "FluidPlayer", 3 + kTimeShift + kQuantized, kNoteLength, p4, kVelocity, p7
  768. else
  769. event "i", "FluidPlayer", 3 + kTimeShift, kNoteLength, p4, kVelocity, p7
  770. endif
  771. turnoff
  772. endin
  773.  
  774. ;===================================================================================================================
  775.  
  776. instr DelayHandler
  777. kSoundfontChoice = p7
  778. kBpm = p5
  779. if(p7 == 0) then
  780. kInterval = chnget:k("delayIntervalMelody")
  781. kRepeats = chnget:k("delayRepeatsMelody")
  782. kPitch = chnget:k("delayPitchMelody")
  783. kTimeShift = chnget:k("delayTimeShiftMelody")
  784. kExtension = chnget:k("delayExtensionMelody")
  785. kVelocityScaler = chnget:k("delayVelocityMelody")
  786. elseif(p7 == 1) then
  787. kInterval = chnget:k("delayIntervalMulti")
  788. kRepeats = chnget:k("delayRepeatsMulti")
  789. kPitch = chnget:k("delayPitchMulti")
  790. kTimeShift = chnget:k("delayTimeShiftMulti")
  791. kExtension = chnget:k("delayExtensionMulti")
  792. kVelocityScaler = chnget:k("delayVelocityMulti")
  793. elseif(p7 == 2) then
  794. kInterval = chnget:k("delayIntervalChord")
  795. kRepeats = chnget:k("delayRepeatsChord")
  796. kPitch = chnget:k("delayPitchChord")
  797. kTimeShift = chnget:k("delayTimeShiftChord")
  798. kExtension = chnget:k("delayExtensionChord")
  799. kVelocityScaler = chnget:k("delayVelocityChord")
  800. endif
  801.  
  802. if(kInterval == 1) then
  803. kInterval = 1
  804. elseif(kInterval == 2) then
  805. kInterval = 1/2
  806. elseif(kInterval == 3) then
  807. kInterval = 1/3
  808. elseif(kInterval == 4) then
  809. kInterval = 1/4
  810. elseif(kInterval == 5) then
  811. kInterval = 1/8
  812. elseif(kInterval == 6) then
  813. kInterval = 1/12
  814. elseif(kInterval == 7) then
  815. kInterval = 1/16
  816. elseif(kInterval == 8) then
  817. kInterval = 1/32
  818. endif
  819. kBaseVelocity = p6 * 127
  820. kBaseVelocity -= kVelocityScaler
  821. kBaseVelocity /= 127
  822. kCounter = 0
  823. ;Assuming 4/4
  824. kBeatLen = 60/kBpm
  825. kPercent = kBeatLen * kInterval
  826. kPercent /= 100
  827. kPercent *= kExtension
  828. kDelayVelocity = 1
  829. playRepeats:
  830. kNote = p4
  831. kRepeater = kCounter + 1
  832. kNoteInterval = kInterval * kRepeater
  833. kDelayVelocity -= 0.1
  834. kStartTime = kNoteInterval * kBeatLen
  835. kStartTime += kTimeShift
  836. kDuration = kBeatLen * kInterval
  837. kDuration += kExtension
  838. ;printk2 kStartTime
  839. event "i", "FluidPlayer", kStartTime, kDuration, kNote + kPitch, kDelayVelocity * kBaseVelocity, p7
  840. loop_lt kCounter, 1, kRepeats - 1, playRepeats
  841. turnoff
  842. endin
  843.  
  844. ;===================================================================================================================
  845.  
  846. instr ArpHandler
  847. kSoundfontChoice = p7
  848. if(p7 == 0) then
  849. kInterval = chnget:k("arpIntervalMelody")
  850. kMode = chnget:k("arpModeMelody")
  851. kNoteLen = chnget:k("arpNoteLenMelody")
  852. kMaxOctave = chnget:k("arpOctaveMelody")
  853. kTimeShift = chnget:k("arpTimeShiftMelody")
  854. kVelocityScaler = chnget:k("arpVelocityMelody")
  855. elseif(p7 == 1) then
  856. kInterval = chnget:k("arpIntervalMulti")
  857. kMode = chnget:k("arpModeMulti")
  858. kNoteLen = chnget:k("arpNoteLenMulti")
  859. kMaxOctave = chnget:k("arpOctaveMulti")
  860. kTimeShift = chnget:k("arpTimeShiftMulti")
  861. kVelocityScaler = chnget:k("arpVelocityMulti")
  862. elseif(p7 == 2) then
  863. kInterval = chnget:k("arpIntervalChord")
  864. kMode = chnget:k("arpModeChord")
  865. kNoteLen = chnget:k("arpNoteLenChord")
  866. kMaxOctave = chnget:k("arpOctaveChord")
  867. kTimeShift = chnget:k("arpTimeShiftChord")
  868. kVelocityScaler = chnget:k("arpVelocityChord")
  869. endif
  870.  
  871. if(kInterval == 1) then
  872. kInterval = 4
  873. elseif(kInterval == 2) then
  874. kInterval = 2
  875. elseif(kInterval == 3) then
  876. kInterval = 1
  877. elseif(kInterval == 4) then
  878. kInterval = 1/2
  879. elseif(kInterval == 5) then
  880. kInterval = 1/3
  881. elseif(kInterval == 6) then
  882. kInterval = 1/4
  883. elseif(kInterval == 7) then
  884. kInterval = 1/8
  885. elseif(kInterval == 8) then
  886. kInterval = 1/12
  887. elseif(kInterval == 9) then
  888. kInterval = 1/16
  889. else
  890. kInterval = 1/32
  891. endif
  892. kMode -= 1
  893. kBpm = p5
  894. kVelocity = p6 * 127
  895. kVelocity -= kVelocityScaler
  896. kVelocity /= 127
  897. ; Assuming 4/4
  898. ; TODO: IMPLEMENT DIFFERENT TIME SIGNATURES
  899. kBarLen = (60 / kBpm) * 4
  900. kRate = kBarLen * kInterval
  901. kUpDownCounter init 0
  902. kCounter init 0
  903. kDownCounter init 3
  904. kGlobalCounter = kMaxOctave * 2
  905. if(metro(1/kRate) == 1) then
  906. if(kCounter > kMaxOctave) then
  907. kCounter = 0
  908. endif
  909. if(kDownCounter == 0) then
  910. kDownCounter = 4
  911. endif
  912. if(kUpDownCounter == kGlobalCounter) then
  913. kUpDownCounter = 0
  914. endif
  915. if(kMode == 0) then
  916. if(kUpDownCounter < kMaxOctave) then
  917. if(kMaxOctave == 0) then
  918. kNote = p4
  919. else
  920. kNote = p4 + 12 * kCounter
  921. endif
  922. else
  923. if(kMaxOctave == 0) then
  924. kNote = p4
  925. else
  926. kNote = p4 + 12 * kDownCounter
  927. endif
  928. endif
  929.  
  930. elseif(kMode == 1) then
  931. if(kMaxOctave == 0) then
  932. kNote = p4
  933. else
  934. kNote = p4 + 12 * kCounter
  935. endif
  936.  
  937. elseif(kMode == 2) then
  938. if(kMaxOctave == 0) then
  939. kNote = p4 + 12 * kDownCounter
  940. endif
  941. endif
  942. kCounter += 1
  943. kDownCounter = kDownCounter - 1
  944. kDuration = p3 * kRate
  945. kDuration *= kNoteLen
  946. event "i", "FluidPlayer", 3 + kTimeShift, kDuration, kNote, kVelocity, p7
  947. endif
  948.  
  949. endin
  950.  
  951. ;===================================================================================================================
  952.  
  953. instr FluidPlayer
  954. kSoundfontChoice = p6
  955. ;printk2 kSoundfontChoice
  956. if(kSoundfontChoice == 0) then
  957. kMin = chnget:k("globalMinMelody")
  958. kMax = chnget:k("globalMaxMelody")
  959. iOctave = chnget("globalOctaveMelody")
  960. elseif(kSoundfontChoice == 1) then
  961. kMin = chnget:k("globalMinMulti")
  962. kMax = chnget:k("globalMaxMulti")
  963. iOctave = chnget("globalOctaveMulti")
  964. elseif(kSoundfontChoice == 2) then
  965. kMin = chnget:k("globalMinChord")
  966. kMax = chnget:k("globalMaxChord")
  967. iOctave = chnget("globalOctaveChord")
  968. endif
  969. iVelocity = p5 * 127
  970. if(iVelocity > 100) then
  971. iVelocity = 100
  972. endif
  973. if((p4 > kMin) && (p4 < kMax)) then
  974. kRandom random 0, 99
  975. SlogLine sprintfk {{Playing on engine %d}}, kSoundfontChoice
  976. ;puts SlogLine, p4
  977. ;if(gkFinalPassthroughProbabilityArray[int(kRandom)] == 1) then
  978. if(p6 == 0) then
  979. fluidNote giMelodyEngine, 1, p4 + 12 * chnget("globalOctaveMelody"), p5 * 127
  980. elseif(p6 == 1) then
  981. Slog sprintfk {{Code Reached %d}}, kSoundfontChoice
  982. ;puts Slog, iNote
  983. fluidNote giMultiEngine, 1, p4 + 12 * chnget("globalOctaveMulti"), p5 * 127
  984. elseif(p6 == 2) then
  985. fluidNote giChordEngine, 1, p4 + 12 * chnget("globalOctaveChord"), p5 * 127
  986. endif
  987. ;endif
  988. endif
  989. turnoff
  990. endin
  991.  
  992. ;===================================================================================================================
  993. gkCounter = 0
  994. instr TexturePlayer
  995. if(metro(1/10) == 1) then
  996. Slog sprintfk {{Texture triggered %d}}, 1
  997. puts Slog, gkCounter
  998. kNote random 10, 70
  999. gkCounter += 1
  1000. event "i", "TextureScheduler", 0, 10, kNote
  1001. endif
  1002. endin
  1003.  
  1004. instr TextureScheduler
  1005. fluidNote giTexturalEngine, 1, p4, 127*0.4
  1006. turnoff
  1007. endin
  1008.  
  1009. instr TextureListener
  1010. aTextureL, aTextureR fluidOut giTexturalEngine
  1011. aTextureL clfilt aTextureL, chnget:k("textureLPCut"), 0, 2
  1012. aTextureR clfilt aTextureR, chnget:k("textureLPCut"), 0, 2
  1013. aTextureL clfilt aTextureL, chnget:k("textureHPCut"), 1, 2
  1014. aTextureR clfilt aTextureR, chnget:k("textureHPCut"), 1, 2
  1015. if(chnget:k("texturePan") < 0) then
  1016. aTextureR *= 1 - abs(chnget:k("texturePan"))
  1017. elseif(chnget:k("texturePan") > 0) then
  1018. aTextureL *= 1 - chnget:k("texturePan")
  1019. endif
  1020.  
  1021. gaOutFive += aTextureL
  1022. gaOutSix += aTextureR
  1023. endin
  1024.  
  1025.  
  1026. ;=====================================================================================================================
  1027.  
  1028.  
  1029. instr FluidListener
  1030. kMelodyVolume = chnget:k("channelVolumeMelody")
  1031. kMultiVolume = chnget:k("channelVolumeMulti")
  1032. kChordVolume = chnget:k("channelVolumeChord")
  1033.  
  1034. kMelodyLPCut = chnget:k("channelLPMelody")
  1035. kMultiLPCut = chnget:k("channelLPMulti")
  1036. kChordLPCut = chnget:k("channelLPChord")
  1037. kMelodyHPCut = chnget:k("channelToneMelody")
  1038. kMultiHPCut = chnget:k("channelToneMulti")
  1039. kChordHPCut = chnget:k("channelToneChord")
  1040. kTexturalLPCut = chnget:k("textureLPCut")
  1041. kTexturalHPCut = chnget:k("textureHPCut")
  1042. kPanMelody = chnget:k("channelPanMelody")
  1043. kPanMulti = chnget:k("channelPanMulti")
  1044. kPanChord = chnget:k("channelPanChord")
  1045. kPanTexture = chnget:k("texturePan")
  1046. if(20 > kMelodyLPCut) then
  1047. kMelodyLPCut = 20
  1048. endif
  1049. if(20 > kMultiLPCut) then
  1050. kMultiLPCut = 20
  1051. endif
  1052. if(20 > kChordLPCut) then
  1053. kChordLPCut = 20
  1054. endif
  1055. if(20 > kTexturalLPCut) then
  1056. kTexturalLPCut = 20
  1057. endif
  1058.  
  1059. aLeftMelody, aRightMelody fluidOut giMelodyEngine
  1060. aLeftMulti, aRightMulti fluidOut giMultiEngine
  1061. ;aLeftMulti = 0
  1062. ;aRightMulti = 0
  1063. aLeftChord, aRightChord fluidOut giChordEngine
  1064. aLeftTexture, aRightTexture fluidOut giTexturalEngine
  1065.  
  1066. aLeftMelody clfilt aLeftMelody, kMelodyLPCut, 0, 2
  1067. aRightMelody clfilt aRightMelody, kMelodyLPCut, 0, 2
  1068. aLeftMelody clfilt aLeftMelody, kMelodyHPCut, 1, 2
  1069. aRightMelody clfilt aRightMelody, kMelodyHPCut, 1, 2
  1070.  
  1071. aLeftMulti clfilt aLeftMulti, kMultiLPCut, 0, 2
  1072. aRightMulti clfilt aRightMulti, kMultiLPCut, 0, 2
  1073. aLeftMulti clfilt aLeftMulti, kMultiHPCut, 1, 2
  1074. aRightMulti clfilt aRightMulti, kMultiHPCut, 1, 2
  1075.  
  1076. aLeftChord clfilt aLeftChord, kChordLPCut, 0, 2
  1077. aRightChord clfilt aRightChord, kChordLPCut, 0, 2
  1078. aLeftChord clfilt aLeftChord, kChordHPCut, 1, 2
  1079. aRightChord clfilt aRightChord, kChordHPCut, 1, 2
  1080.  
  1081. if(kPanMelody < 0) then
  1082. aRightMelody *= (1 - abs(kPanMelody))
  1083. elseif(kPanMelody > 0) then
  1084. aLeftMelody *= (1 - kPanMelody)
  1085. endif
  1086.  
  1087. if(kPanMulti < 0) then
  1088. aRightMulti *= (1 - abs(kPanMulti))
  1089. elseif(kPanMulti > 0) then
  1090. aLeftMulti *= (1 - kPanMulti)
  1091. endif
  1092.  
  1093. if(kPanChord < 0) then
  1094. aRightChord *= (1 - abs(kPanChord))
  1095. elseif(kPanChord > 0) then
  1096. aLeftChord *= (1 - kPanChord)
  1097. endif
  1098.  
  1099.  
  1100. aLeftMelody *= kMelodyVolume
  1101. aRightMelody *= kMelodyVolume
  1102. aLeftMulti *= kMultiVolume
  1103. aRightMulti *= kMultiVolume
  1104. aLeftChord *= kChordVolume
  1105. aRightChord *= kChordVolume
  1106. ; BREAKOUT 3/4
  1107. gaOutThree += (aLeftMelody * 0.5) + (aLeftMulti * 0.5)
  1108. gaOutFour += (aRightMelody * 0.5) + (aRightMulti * 0.5)
  1109. ; BREAKOUT 5/6
  1110. gaOutFive += (aLeftChord * 0.5)
  1111. gaOutSix += (aRightChord * 0.5)
  1112.  
  1113. gaLeft += (aLeftMelody * 1/3) + (aLeftMulti * 1/3) + (aLeftChord * 1/3)
  1114. gaRight += (aRightMelody * 1/3) + (aRightMulti * 1/3) + (aRightChord * 1/3)
  1115.  
  1116. gaSummed += gaLeft + gaRight
  1117. endin
  1118.  
  1119. ;===================================================================================================================
  1120.  
  1121. instr 9999
  1122. kLPCut = chnget:k("convolutionLP")
  1123. kHPCut = chnget:k("convolutionHP")
  1124. kDryWet = chnget:k("convolutionDryWet")
  1125. kInverseDryWet = 1 - kDryWet
  1126. kCounter init 1
  1127. Sdisplay = p4
  1128. aConvolvedL, aConvolvedR pconvolve gaSummed, p4, 2048
  1129.  
  1130. aConvolvedL clfilt aConvolvedL, kLPCut, 0, 2
  1131. aConvolvedR clfilt aConvolvedR, kLPCut, 0, 2
  1132. aConvolvedL clfilt aConvolvedL, kHPCut, 1, 2
  1133. aConvolvedR clfilt aConvolvedR, kHPCut, 1, 2
  1134. aConvolvedL *= kDryWet
  1135. aConvolvedR *= kDryWet
  1136. aConvolvedL *= 0.2
  1137. aConvolvedR *= 0.2
  1138. gaLeft *= kInverseDryWet
  1139. gaRight *= kInverseDryWet
  1140. gaLeft *= 1.3
  1141. gaRight *= 1.3
  1142. aCombinedL = aConvolvedL + gaLeft
  1143. aCombinedR = aConvolvedR + gaRight
  1144. gaConvolvedL += aCombinedL
  1145. gaConvolvedR += aCombinedR
  1146. ;BREAKOUT 7/8
  1147. gaOutSeven += aConvolvedL
  1148. gaOutEight += aConvolvedR
  1149.  
  1150. kCounter += 1
  1151. gaSummed = 0
  1152. gaLeft = 0
  1153. gaRight = 0
  1154. endin
  1155.  
  1156. ;===================================================================================================================
  1157.  
  1158. instr DelayLeft
  1159. kTime1 = chnget:k("delayTimeLeft1")
  1160. kTime2 = chnget:k("delayTimeLeft2")
  1161. kTime3 = chnget:k("delayTimeLeft3")
  1162. kPitchShift = chnget:k("delayPitchShift")
  1163. kDryWet = chnget:k("delayDryWet")
  1164. kInverseDryWet = 1 - kDryWet
  1165. kFeedback = chnget:k("delayFeedbackL")
  1166. kLPCut1 = chnget:k("delayLPCut1")
  1167. kLPCut2 = chnget:k("delayLPCut2")
  1168. kLPCut3 = chnget:k("delayLPCut3")
  1169. kHPCut1 = chnget:k("delayHPCut1")
  1170. kHPCut2 = chnget:k("delayHPCut2")
  1171. kHPCut3 = chnget:k("delayHPCut3")
  1172. aBufOut delayr 5
  1173. aTapOne deltap3 kTime1
  1174. aTapOne clfilt aTapOne, kLPCut1, 0, 8
  1175. aTapOne clfilt aTapOne, kHPCut1, 1, 8
  1176. aTapTwo deltap3 kTime2
  1177. aTapTwo clfilt aTapTwo, kLPCut2, 0, 8
  1178. aTapTwo clfilt aTapTwo, kHPCut2, 1, 8
  1179. aTapThree deltap3 kTime3
  1180. aTapThree clfilt aTapThree, kLPCut3, 0, 8
  1181. aTapThree clfilt aTapThree, kHPCut3, 1, 8
  1182. aCombined = (aTapOne + aTapTwo + aTapThree) * kFeedback
  1183. aSignal = aCombined
  1184. delayw (aSignal + gaConvolvedL) * kFeedback
  1185. aSignal *= kDryWet
  1186. gaConvolvedL *= kInverseDryWet
  1187. gaOutputL = aSignal + gaConvolvedL
  1188. gaOutOne = gaOutputL
  1189. endin
  1190.  
  1191. ;===================================================================================================================
  1192.  
  1193. instr DelayRight
  1194. kTime1 = chnget:k("delayTimeRight1")
  1195. kTime2 = chnget:k("delayTimeRight2")
  1196. kTime3 = chnget:k("delayTimeRight3")
  1197. kPitchShift = chnget:k("delayPitchShift")
  1198. kDryWet = chnget:k("delayDryWet")
  1199. kInverseDryWet = 1 - kDryWet
  1200. kFeedback = chnget:k("delayFeedbackR")
  1201. kLPCut1 = chnget:k("delayLPCut1")
  1202. kLPCut2 = chnget:k("delayLPCut2")
  1203. kLPCut3 = chnget:k("delayLPCut2")
  1204. kHPCut1 = chnget:k("delayHPCut1")
  1205. kHPCut2 = chnget:k("delayHPCut2")
  1206. kHPCut3 = chnget:k("delayHPCut3")
  1207. aBufOut delayr 5
  1208. aTapOne deltap3 kTime1
  1209. aTapOne clfilt aTapOne, kLPCut1, 0, 2
  1210. aTapOne clfilt aTapOne, kHPCut1, 1, 2
  1211. aTapTwo deltap3 kTime2
  1212. aTapTwo clfilt aTapTwo, kLPCut2, 0, 2
  1213. aTapTwo clfilt aTapTwo, kHPCut2, 1, 2
  1214. aTapThree deltap3 kTime3
  1215. aTapThree clfilt aTapThree, kLPCut3, 0, 2
  1216. aTapThree clfilt aTapThree, kHPCut3, 1, 2
  1217. aCombined = (aTapOne + aTapTwo + aTapThree) * kFeedback
  1218. aSignal = aCombined
  1219. delayw (aSignal + gaConvolvedR) * kFeedback
  1220. aSignal *= kDryWet
  1221. gaConvolvedR *= kInverseDryWet
  1222. gaOutputR = aSignal + gaConvolvedR
  1223. gaOutTwo = gaOutputR
  1224. endin
  1225.  
  1226. ;===================================================================================================================
  1227.  
  1228. instr SignalOutput
  1229. ;outo gaOutOne*4, gaOutTwo*4 ;gaOutThree*8, gaOutFour*8, gaOutFive*8, gaOutSix*8, gaOutSeven*8, gaOutEight*8
  1230. outs gaOutOne*4, gaOutTwo*4
  1231. gaConvolvedL = 0
  1232. gaConvolvedR = 0
  1233. gaOutOne = 0
  1234. gaOutTwo = 0
  1235. gaOutThree = 0
  1236. gaOutFour = 0
  1237. gaOutFive = 0
  1238. gaOutSix = 0
  1239. gaOutSeven = 0
  1240. gaOutEight = 0
  1241. endin
  1242.  
  1243. ;===================================================================================================================
  1244.  
  1245. </CsInstruments>
  1246. <CsScore>
  1247.  
  1248. f0 z
  1249. ;starts instrument 1 and runs it for a week
  1250. i"Initialise" 0 [60*60*24*7]
  1251. </CsScore>
  1252. </CsoundSynthesizer>
  1253. ;LINES TO CHANGE FOR NEW SOUNDFONT: (Obviously the visuals in the UI section, but more importantly...
  1254. ; lines 319, 320 and 321 to the path to the soundfont
  1255. ; from lines 498 to 629, every time the number 90 appears its talking about the number of presets in the soundfont.
  1256. ; SO also change this number to the amount of presets present in the file!
  1257. ; IN THE UI, the new 3 comboboxes are: Enabled/Disabled, Mode and duration in seconds (We can add more durations v easily, if I'm asleep and you want more,
  1258. ; add them incrementally (so say in items, you'd add "11", "12", "13" etc in the brackets.
  1259. ; Bear in mind that these work sequentially at the moment (if the second item was 100 it would still read the value as 2 because it's the selection it's based
  1260. ; on not the value), I can work around this tomorrow but for now I think this is okay!
  1261.  
  1262.  
  1263. /* OUTPUT CONTROLS:::::
  1264. MAIN: 1/2
  1265. MELODY + MULTI: 3/4
  1266. CHORD + TEXTURES: 5/6
  1267. CONV: 7/8
  1268. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement