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.

91 lines
2.1KB

  1. #include "1x8CV.hpp"
  2. namespace rack_plugin_SynthKit {
  3. M1x8CVModule::M1x8CVModule()
  4. : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
  5. for (int i = 0; i < 8; i++) {
  6. cv[i] = new SynthDevKit::CV(1.7f);
  7. }
  8. }
  9. void M1x8CVModule::step() {
  10. float in = inputs[TOP_INPUT].value;
  11. // this logic can be greatly simplified with a loop
  12. cv[0]->update(inputs[FIRST_CV].value);
  13. cv[1]->update(inputs[SECOND_CV].value);
  14. cv[2]->update(inputs[THIRD_CV].value);
  15. cv[3]->update(inputs[FOURTH_CV].value);
  16. cv[4]->update(inputs[FIFTH_CV].value);
  17. cv[5]->update(inputs[SIXTH_CV].value);
  18. cv[6]->update(inputs[SEVENTH_CV].value);
  19. cv[7]->update(inputs[EIGHTH_CV].value);
  20. if (cv[0]->isHigh()) {
  21. outputs[FIRST_OUTPUT].value = in;
  22. lights[FIRST_LED].value = 1;
  23. } else {
  24. outputs[FIRST_OUTPUT].value = 0;
  25. lights[FIRST_LED].value = 0;
  26. }
  27. if (cv[1]->isHigh()) {
  28. outputs[SECOND_OUTPUT].value = in;
  29. lights[SECOND_LED].value = 1;
  30. } else {
  31. outputs[SECOND_OUTPUT].value = 0;
  32. lights[SECOND_LED].value = 0;
  33. }
  34. if (cv[2]->isHigh()) {
  35. outputs[THIRD_OUTPUT].value = in;
  36. lights[THIRD_LED].value = 1;
  37. } else {
  38. outputs[THIRD_OUTPUT].value = 0;
  39. lights[THIRD_LED].value = 0;
  40. }
  41. if (cv[3]->isHigh()) {
  42. outputs[FOURTH_OUTPUT].value = in;
  43. lights[FOURTH_LED].value = 1;
  44. } else {
  45. outputs[FOURTH_OUTPUT].value = 0;
  46. lights[FOURTH_LED].value = 0;
  47. }
  48. if (cv[4]->isHigh()) {
  49. outputs[FIFTH_OUTPUT].value = in;
  50. lights[FIFTH_LED].value = 1;
  51. } else {
  52. outputs[FIFTH_OUTPUT].value = 0;
  53. lights[FIFTH_LED].value = 0;
  54. }
  55. if (cv[5]->isHigh()) {
  56. outputs[SIXTH_OUTPUT].value = in;
  57. lights[SIXTH_LED].value = 1;
  58. } else {
  59. outputs[SIXTH_OUTPUT].value = 0;
  60. lights[SIXTH_LED].value = 0;
  61. }
  62. if (cv[6]->isHigh()) {
  63. outputs[SEVENTH_OUTPUT].value = in;
  64. lights[SEVENTH_LED].value = 1;
  65. } else {
  66. outputs[SEVENTH_OUTPUT].value = 0;
  67. lights[SEVENTH_LED].value = 0;
  68. }
  69. if (cv[7]->isHigh()) {
  70. outputs[EIGHTH_OUTPUT].value = in;
  71. lights[EIGHTH_LED].value = 1;
  72. } else {
  73. outputs[EIGHTH_OUTPUT].value = 0;
  74. lights[EIGHTH_LED].value = 0;
  75. }
  76. }
  77. } // namespace rack_plugin_SynthKit