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.

73 lines
2.4KB

  1. #include "Noise.hpp"
  2. void Noise::step() {
  3. if (outputs[BLUE_OUTPUT].active) {
  4. outputs[BLUE_OUTPUT].value = clamp(_blue.next() * 20.0f, -10.0f, 10.f);
  5. }
  6. if (outputs[WHITE_OUTPUT].active) {
  7. outputs[WHITE_OUTPUT].value = clamp(_white.next() * 10.0f, -10.0f, 10.f);
  8. }
  9. if (outputs[PINK_OUTPUT].active) {
  10. outputs[PINK_OUTPUT].value = clamp(_pink.next() * 15.0f, -10.0f, 10.f);
  11. }
  12. if (outputs[RED_OUTPUT].active) {
  13. outputs[RED_OUTPUT].value = clamp(_red.next() * 20.0f, -10.0f, 10.f);
  14. }
  15. if (outputs[GAUSS_OUTPUT].active) {
  16. outputs[GAUSS_OUTPUT].value = clamp(_gauss.next(), -10.0f, 10.f);
  17. }
  18. float in = 0.0;
  19. if (inputs[ABS_INPUT].active) {
  20. in = inputs[ABS_INPUT].value;
  21. if (in < 0.0) {
  22. in = -in;
  23. }
  24. }
  25. outputs[ABS_OUTPUT].value = in;
  26. }
  27. struct NoiseWidget : ModuleWidget {
  28. static constexpr int hp = 3;
  29. NoiseWidget(Noise* module) : ModuleWidget(module) {
  30. box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
  31. {
  32. SVGPanel *panel = new SVGPanel();
  33. panel->box.size = box.size;
  34. panel->setBackground(SVG::load(assetPlugin(plugin, "res/Noise.svg")));
  35. addChild(panel);
  36. }
  37. addChild(Widget::create<ScrewSilver>(Vec(0, 0)));
  38. addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 15, 365)));
  39. // generated by svg_widgets.rb
  40. auto absInputPosition = Vec(10.5, 253.0);
  41. auto blueOutputPosition = Vec(10.5, 24.0);
  42. auto whiteOutputPosition = Vec(10.5, 65.0);
  43. auto pinkOutputPosition = Vec(10.5, 106.0);
  44. auto redOutputPosition = Vec(10.5, 147.0);
  45. auto gaussOutputPosition = Vec(10.5, 188.0);
  46. auto absOutputPosition = Vec(10.5, 291.0);
  47. // end generated by svg_widgets.rb
  48. addInput(Port::create<Port24>(absInputPosition, Port::INPUT, module, Noise::ABS_INPUT));
  49. addOutput(Port::create<Port24>(blueOutputPosition, Port::OUTPUT, module, Noise::BLUE_OUTPUT));
  50. addOutput(Port::create<Port24>(whiteOutputPosition, Port::OUTPUT, module, Noise::WHITE_OUTPUT));
  51. addOutput(Port::create<Port24>(pinkOutputPosition, Port::OUTPUT, module, Noise::PINK_OUTPUT));
  52. addOutput(Port::create<Port24>(redOutputPosition, Port::OUTPUT, module, Noise::RED_OUTPUT));
  53. addOutput(Port::create<Port24>(gaussOutputPosition, Port::OUTPUT, module, Noise::GAUSS_OUTPUT));
  54. addOutput(Port::create<Port24>(absOutputPosition, Port::OUTPUT, module, Noise::ABS_OUTPUT));
  55. }
  56. };
  57. RACK_PLUGIN_MODEL_INIT(Bogaudio, Noise) {
  58. Model *modelNoise = createModel<Noise, NoiseWidget>("Bogaudio-Noise", "Noise", "noise source", NOISE_TAG, RANDOM_TAG);
  59. return modelNoise;
  60. }