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.

56 lines
2.5KB

  1. #include "turing-pulse-module.hh"
  2. #include <iostream>
  3. namespace rack_plugin_Skylights {
  4. void turing_pulse_module::step() {
  5. uint16_t seq = (uint16_t)ceil((inputs[I_EXPANDER].value / 10.0) * 65535.0);
  6. outputs[O_GATE1 ].value = ((seq & 1 ) == 1 ? 10.0 : 0.0);
  7. outputs[O_GATE2 ].value = ((seq & 2 ) == 2 ? 10.0 : 0.0);
  8. outputs[O_GATE3 ].value = ((seq & 4 ) == 4 ? 10.0 : 0.0);
  9. outputs[O_GATE4 ].value = ((seq & 8 ) == 8 ? 10.0 : 0.0);
  10. outputs[O_GATE5 ].value = ((seq & 16) == 16 ? 10.0 : 0.0);
  11. outputs[O_GATE6 ].value = ((seq & 32) == 32 ? 10.0 : 0.0);
  12. outputs[O_GATE7 ].value = ((seq & 64) == 64 ? 10.0 : 0.0);
  13. outputs[O_GATE1P2 ].value = ((seq & 3 ) == 3 ? 10.0 : 0.0);
  14. outputs[O_GATE2P4 ].value = ((seq & 10) == 10 ? 10.0 : 0.0);
  15. outputs[O_GATE4P7 ].value = ((seq & 72) == 72 ? 10.0 : 0.0);
  16. outputs[O_GATE1P2P4P7].value = ((seq & 75) == 75 ? 10.0 : 0.0);
  17. if (inputs[I_PULSE].active) {
  18. outputs[O_GATE1 ].value *= inputs[I_PULSE].value;
  19. outputs[O_GATE2 ].value *= inputs[I_PULSE].value;
  20. outputs[O_GATE3 ].value *= inputs[I_PULSE].value;
  21. outputs[O_GATE4 ].value *= inputs[I_PULSE].value;
  22. outputs[O_GATE5 ].value *= inputs[I_PULSE].value;
  23. outputs[O_GATE6 ].value *= inputs[I_PULSE].value;
  24. outputs[O_GATE7 ].value *= inputs[I_PULSE].value;
  25. outputs[O_GATE1P2 ].value *= inputs[I_PULSE].value;
  26. outputs[O_GATE2P4 ].value *= inputs[I_PULSE].value;
  27. outputs[O_GATE4P7 ].value *= inputs[I_PULSE].value;
  28. outputs[O_GATE1P2P4P7].value *= inputs[I_PULSE].value;
  29. }
  30. lights[L_GATE1 ].value = outputs[O_GATE1 ].value;
  31. lights[L_GATE2 ].value = outputs[O_GATE2 ].value;
  32. lights[L_GATE3 ].value = outputs[O_GATE3 ].value;
  33. lights[L_GATE4 ].value = outputs[O_GATE4 ].value;
  34. lights[L_GATE5 ].value = outputs[O_GATE5 ].value;
  35. lights[L_GATE6 ].value = outputs[O_GATE6 ].value;
  36. lights[L_GATE7 ].value = outputs[O_GATE7 ].value;
  37. lights[L_GATE1P2 ].value = outputs[O_GATE1P2 ].value;
  38. lights[L_GATE2P4 ].value = outputs[O_GATE2P4 ].value;
  39. lights[L_GATE4P7 ].value = outputs[O_GATE4P7 ].value;
  40. lights[L_GATE1P2P4P7].value = outputs[O_GATE1P2P4P7].value;
  41. }
  42. turing_pulse_module::turing_pulse_module() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
  43. }
  44. turing_pulse_module::~turing_pulse_module() {
  45. }
  46. } // namespace rack_plugin_Skylights