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.

78 lines
2.6KB

  1. #include <stdint.h>
  2. #include "../deps/SynthDevKit/src/CV.hpp"
  3. #include "DrumKit.hpp"
  4. #include "DrumModule.hpp"
  5. #include "snare.h"
  6. namespace rack_plugin_DrumKit {
  7. struct SnareModule : DrumModule {
  8. void setupSamples( ) override;
  9. };
  10. void SnareModule::setupSamples( ) {
  11. samples[0] = { (float *)snare1, snare1_len };
  12. samples[1] = { (float *)snare2, snare2_len };
  13. samples[2] = { (float *)snare3, snare3_len };
  14. samples[3] = { (float *)snare4, snare4_len };
  15. samples[4] = { (float *)snare5, snare5_len };
  16. samples[5] = { (float *)snare6, snare6_len };
  17. samples[6] = { (float *)snare7, snare7_len };
  18. samples[7] = { (float *)snare8, snare8_len };
  19. samples[8] = { (float *)snare9, snare9_len };
  20. samples[9] = { (float *)snare10, snare10_len };
  21. samples[10] = { (float *)snare11, snare11_len };
  22. samples[11] = { (float *)snare12, snare12_len };
  23. samples[12] = { (float *)snare13, snare13_len };
  24. samples[13] = { (float *)snare14, snare14_len };
  25. samples[14] = { (float *)snare15, snare15_len };
  26. samples[15] = { (float *)snare16, snare16_len };
  27. numSamples = 16;
  28. }
  29. struct SnareWidget : ModuleWidget {
  30. SnareWidget(SnareModule *module);
  31. };
  32. SnareWidget::SnareWidget(SnareModule *module) : ModuleWidget(module) {
  33. box.size = Vec(3 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT);
  34. {
  35. SVGPanel *panel = new SVGPanel( );
  36. panel->box.size = box.size;
  37. panel->setBackground(SVG::load(assetPlugin(plugin, "res/Snare.svg")));
  38. addChild(panel);
  39. }
  40. addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
  41. addChild(Widget::create<ScrewSilver>(
  42. Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
  43. addInput(
  44. Port::create<PJ301MPort>(Vec(10, 45), Port::INPUT, module, SnareModule::CLOCK1_INPUT));
  45. addParam(ParamWidget::create<RoundBlackSnapKnob>(
  46. Vec(8, 92), module, SnareModule::DRUM1_PARAM, 1.0, 16.0, 8.0));
  47. addOutput(Port::create<PJ301MPort>(Vec(10, 149), Port::OUTPUT, module,
  48. SnareModule::AUDIO1_OUTPUT));
  49. addInput(
  50. Port::create<PJ301MPort>(Vec(10, 205), Port::INPUT, module, SnareModule::CLOCK2_INPUT));
  51. addParam(ParamWidget::create<RoundBlackSnapKnob>(
  52. Vec(8, 252), module, SnareModule::DRUM2_PARAM, 1.0, 16.0, 8.0));
  53. addOutput(Port::create<PJ301MPort>(Vec(10, 308), Port::OUTPUT, module,
  54. SnareModule::AUDIO2_OUTPUT));
  55. }
  56. } // namespace rack_plugin_DrumKit
  57. using namespace rack_plugin_DrumKit;
  58. RACK_PLUGIN_MODEL_INIT(DrumKit, Snare) {
  59. Model *modelSnare = Model::create<SnareModule, SnareWidget>("DrumKit", "Snare Drum N", "Snare Drum N", DRUM_TAG);
  60. return modelSnare;
  61. }