You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

245 lines
9.9KB

  1. #pragma once
  2. #include "NoisePlethoraPlugin.hpp"
  3. class PrimeCluster : public NoisePlethoraPlugin {
  4. public:
  5. PrimeCluster()
  6. // : patchCord1(noise1, 0, waveform1, 0)
  7. // , patchCord2(noise1, 0, waveform2, 0)
  8. // , patchCord3(noise1, 0, waveform3, 0)
  9. // , patchCord4(noise1, 0, waveform4, 0)
  10. // , patchCord5(noise1, 0, waveform5, 0)
  11. // , patchCord6(noise1, 0, waveform6, 0)
  12. // , patchCord7(noise1, 0, waveform7, 0)
  13. // , patchCord8(noise1, 0, waveform8, 0)
  14. // , patchCord9(noise1, 0, waveform9, 0)
  15. // , patchCord10(noise1, 0, waveform10, 0)
  16. // , patchCord11(noise1, 0, waveform11, 0)
  17. // , patchCord12(noise1, 0, waveform12, 0)
  18. // , patchCord13(noise1, 0, waveform13, 0)
  19. // , patchCord14(noise1, 0, waveform14, 0)
  20. // , patchCord15(noise1, 0, waveform15, 0)
  21. // , patchCord16(noise1, 0, waveform16, 0)
  22. // , patchCord17(waveform16, 0, mixer4, 3)
  23. // , patchCord18(waveform14, 0, mixer4, 1)
  24. // , patchCord19(waveform15, 0, mixer4, 2)
  25. // , patchCord20(waveform13, 0, mixer4, 0)
  26. // , patchCord21(waveform8, 0, mixer2, 3)
  27. // , patchCord22(waveform6, 0, mixer2, 1)
  28. // , patchCord23(waveform7, 0, mixer2, 2)
  29. // , patchCord24(waveform12, 0, mixer3, 3)
  30. // , patchCord25(waveform5, 0, mixer2, 0)
  31. // , patchCord26(waveform10, 0, mixer3, 1)
  32. // , patchCord27(waveform11, 0, mixer3, 2)
  33. // , patchCord28(waveform9, 0, mixer3, 0)
  34. // , patchCord29(waveform4, 0, mixer1, 3)
  35. // , patchCord30(waveform2, 0, mixer1, 1)
  36. // , patchCord31(waveform3, 0, mixer1, 2)
  37. // , patchCord32(waveform1, 0, mixer1, 0)
  38. // , patchCord33(mixer4, 0, mixer5, 3)
  39. // , patchCord34(mixer3, 0, mixer5, 2)
  40. // , patchCord35(mixer2, 0, mixer5, 1)
  41. // , patchCord36(mixer1, 0, mixer5, 0)
  42. {}
  43. ~PrimeCluster() override {}
  44. PrimeCluster(const PrimeCluster&) = delete;
  45. PrimeCluster& operator=(const PrimeCluster&) = delete;
  46. void init() override {
  47. mixer1.gain(0, 1);
  48. mixer1.gain(1, 1);
  49. mixer1.gain(2, 1);
  50. mixer1.gain(3, 1);
  51. mixer2.gain(0, 1);
  52. mixer2.gain(1, 1);
  53. mixer2.gain(2, 1);
  54. mixer2.gain(3, 1);
  55. mixer3.gain(0, 1);
  56. mixer3.gain(1, 1);
  57. mixer3.gain(2, 1);
  58. mixer3.gain(3, 1);
  59. mixer4.gain(0, 1);
  60. mixer4.gain(1, 1);
  61. mixer4.gain(2, 1);
  62. mixer4.gain(3, 1);
  63. mixer5.gain(0, 1);
  64. mixer5.gain(1, 1);
  65. mixer5.gain(2, 1);
  66. mixer5.gain(3, 1);
  67. int masterWaveform = WAVEFORM_TRIANGLE_VARIABLE;
  68. float masterVolume = 0.3;
  69. waveform1.begin(masterVolume, 200, masterWaveform);
  70. waveform2.begin(masterVolume, 647, masterWaveform);
  71. waveform3.begin(masterVolume, 524, masterWaveform);
  72. waveform4.begin(masterVolume, 444, masterWaveform);
  73. waveform5.begin(masterVolume, 368, masterWaveform);
  74. waveform6.begin(masterVolume, 283, masterWaveform);
  75. waveform7.begin(masterVolume, 283, masterWaveform);
  76. waveform8.begin(masterVolume, 283, masterWaveform);
  77. waveform9.begin(masterVolume, 283, masterWaveform);
  78. waveform10.begin(masterVolume, 283, masterWaveform);
  79. waveform11.begin(masterVolume, 283, masterWaveform);
  80. waveform12.begin(masterVolume, 283, masterWaveform);
  81. waveform13.begin(masterVolume, 283, masterWaveform);
  82. waveform14.begin(masterVolume, 283, masterWaveform);
  83. waveform15.begin(masterVolume, 283, masterWaveform);
  84. waveform16.begin(masterVolume, 283, masterWaveform);
  85. }
  86. void process(float k1, float k2) override {
  87. float multfactor = k1 * 10 + 0.5;
  88. waveform1.frequency(53 * multfactor);
  89. waveform2.frequency(127 * multfactor);
  90. waveform3.frequency(199 * multfactor);
  91. waveform4.frequency(283 * multfactor);
  92. waveform5.frequency(383 * multfactor);
  93. waveform6.frequency(467 * multfactor);
  94. waveform7.frequency(577 * multfactor);
  95. waveform8.frequency(661 * multfactor);
  96. waveform9.frequency(769 * multfactor);
  97. waveform10.frequency(877 * multfactor);
  98. waveform11.frequency(983 * multfactor);
  99. waveform12.frequency(1087 * multfactor);
  100. waveform13.frequency(1193 * multfactor);
  101. waveform14.frequency(1297 * multfactor);
  102. waveform15.frequency(1429 * multfactor);
  103. waveform16.frequency(1523 * multfactor);
  104. noise1.amplitude(k2 * 0.2);
  105. }
  106. void processGraphAsBlock(TeensyBuffer& blockBuffer) override {
  107. noise1.update(&noiseOut);
  108. // FM from single noise source
  109. waveform1.update(&noiseOut, nullptr, &waveformOut[0]);
  110. waveform2.update(&noiseOut, nullptr, &waveformOut[1]);
  111. waveform3.update(&noiseOut, nullptr, &waveformOut[2]);
  112. waveform4.update(&noiseOut, nullptr, &waveformOut[3]);
  113. waveform5.update(&noiseOut, nullptr, &waveformOut[4]);
  114. waveform6.update(&noiseOut, nullptr, &waveformOut[5]);
  115. waveform7.update(&noiseOut, nullptr, &waveformOut[6]);
  116. waveform8.update(&noiseOut, nullptr, &waveformOut[7]);
  117. waveform9.update(&noiseOut, nullptr, &waveformOut[8]);
  118. waveform10.update(&noiseOut, nullptr, &waveformOut[9]);
  119. waveform11.update(&noiseOut, nullptr, &waveformOut[10]);
  120. waveform12.update(&noiseOut, nullptr, &waveformOut[11]);
  121. waveform13.update(&noiseOut, nullptr, &waveformOut[12]);
  122. waveform14.update(&noiseOut, nullptr, &waveformOut[13]);
  123. waveform15.update(&noiseOut, nullptr, &waveformOut[14]);
  124. waveform16.update(&noiseOut, nullptr, &waveformOut[15]);
  125. mixer1.update(&waveformOut[0], &waveformOut[1], &waveformOut[2], &waveformOut[3], &mixerOut[0]);
  126. mixer2.update(&waveformOut[4], &waveformOut[5], &waveformOut[6], &waveformOut[7], &mixerOut[1]);
  127. mixer3.update(&waveformOut[8], &waveformOut[9], &waveformOut[10], &waveformOut[11], &mixerOut[2]);
  128. mixer4.update(&waveformOut[12], &waveformOut[13], &waveformOut[14], &waveformOut[15], &mixerOut[3]);
  129. mixer5.update(&mixerOut[0], &mixerOut[1], &mixerOut[2], &mixerOut[3], &mixerOut[4]);
  130. blockBuffer.pushBuffer(mixerOut[4].data, AUDIO_BLOCK_SAMPLES);
  131. }
  132. AudioStream& getStream() override {
  133. return mixer5;
  134. }
  135. unsigned char getPort() override {
  136. return 0;
  137. }
  138. private:
  139. audio_block_t noiseOut, waveformOut[16] = {}, mixerOut[5] = {};
  140. AudioSynthNoiseWhite noise1; //xy=306.20001220703125,530
  141. AudioSynthWaveformModulated waveform16; //xy=591.2000122070312,906
  142. AudioSynthWaveformModulated waveform14; //xy=593.2000122070312,801
  143. AudioSynthWaveformModulated waveform15; //xy=593.2000122070312,846
  144. AudioSynthWaveformModulated waveform13; //xy=594.2000122070312,759
  145. AudioSynthWaveformModulated waveform8; //xy=601.2000122070312,486
  146. AudioSynthWaveformModulated waveform6; //xy=603.2000122070312,381
  147. AudioSynthWaveformModulated waveform7; //xy=603.2000122070312,426
  148. AudioSynthWaveformModulated waveform12; //xy=602.2000122070312,697
  149. AudioSynthWaveformModulated waveform5; //xy=604.2000122070312,339
  150. AudioSynthWaveformModulated waveform10; //xy=604.2000122070312,592
  151. AudioSynthWaveformModulated waveform11; //xy=604.2000122070312,637
  152. AudioSynthWaveformModulated waveform9; //xy=605.2000122070312,550
  153. AudioSynthWaveformModulated waveform4; //xy=609.2000122070312,271
  154. AudioSynthWaveformModulated waveform2; //xy=611.2000122070312,166
  155. AudioSynthWaveformModulated waveform3; //xy=611.2000122070312,211
  156. AudioSynthWaveformModulated waveform1; //xy=612.2000122070312,123
  157. AudioMixer4 mixer4; //xy=811.2000122070312,850
  158. AudioMixer4 mixer3; //xy=822.2000122070312,641
  159. AudioMixer4 mixer2; //xy=828.2000122070312,430
  160. AudioMixer4 mixer1; //xy=829.2000122070312,215
  161. AudioMixer4 mixer5; //xy=1076.2000122070312,427
  162. // AudioSynthWaveformModulated waveform16; //xy=581.75,1167.5
  163. // AudioSynthWaveformModulated waveform14; //xy=583.75,1062.5
  164. // AudioSynthWaveformModulated waveform15; //xy=583.75,1107.5
  165. // AudioSynthWaveformModulated waveform13; //xy=584.75,1020
  166. // AudioSynthWaveformModulated waveform8; //xy=591.75,747.5
  167. // AudioSynthWaveformModulated waveform6; //xy=593.75,642.5
  168. // AudioSynthWaveformModulated waveform7; //xy=593.75,687.5
  169. // AudioSynthWaveformModulated waveform12; //xy=592.75,958.5
  170. // AudioSynthWaveformModulated waveform5; //xy=594.75,600
  171. // AudioSynthWaveformModulated waveform10; //xy=594.75,853.5
  172. // AudioSynthWaveformModulated waveform11; //xy=594.75,898.5
  173. // AudioSynthWaveformModulated waveform9; //xy=595.75,811
  174. // AudioSynthWaveformModulated waveform4; //xy=599.75,532.25
  175. // AudioSynthWaveformModulated waveform2; //xy=601.75,427.25
  176. // AudioSynthWaveformModulated waveform3; //xy=601.75,472.25
  177. // AudioSynthWaveformModulated waveform1; //xy=602.75,384.75
  178. // AudioMixer4 mixer4; //xy=801.75,1111.25
  179. // AudioMixer4 mixer3; //xy=812.75,902.25
  180. // AudioMixer4 mixer2; //xy=818.75,691.25
  181. // AudioMixer4 mixer1; //xy=819.75,476
  182. // AudioMixer4 mixer5; //xy=1066.75,688
  183. // AudioConnection patchCord1;
  184. // AudioConnection patchCord2;
  185. // AudioConnection patchCord3;
  186. // AudioConnection patchCord4;
  187. // AudioConnection patchCord5;
  188. // AudioConnection patchCord6;
  189. // AudioConnection patchCord7;
  190. // AudioConnection patchCord8;
  191. // AudioConnection patchCord9;
  192. // AudioConnection patchCord10;
  193. // AudioConnection patchCord11;
  194. // AudioConnection patchCord12;
  195. // AudioConnection patchCord13;
  196. // AudioConnection patchCord14;
  197. // AudioConnection patchCord15;
  198. // AudioConnection patchCord16;
  199. // AudioConnection patchCord17;
  200. // AudioConnection patchCord18;
  201. // AudioConnection patchCord19;
  202. // AudioConnection patchCord20;
  203. // AudioConnection patchCord21;
  204. // AudioConnection patchCord22;
  205. // AudioConnection patchCord23;
  206. // AudioConnection patchCord24;
  207. // AudioConnection patchCord25;
  208. // AudioConnection patchCord26;
  209. // AudioConnection patchCord27;
  210. // AudioConnection patchCord28;
  211. // AudioConnection patchCord29;
  212. // AudioConnection patchCord30;
  213. // AudioConnection patchCord31;
  214. // AudioConnection patchCord32;
  215. // AudioConnection patchCord33;
  216. // AudioConnection patchCord34;
  217. // AudioConnection patchCord35;
  218. // AudioConnection patchCord36;
  219. };
  220. REGISTER_PLUGIN(PrimeCluster);