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.

77 lines
2.4KB

  1. #include <stdint.h>
  2. #include "../deps/SynthDevKit/src/CV.hpp"
  3. #include "DrumKit.hpp"
  4. #include "DrumModule.hpp"
  5. #include "kick.h"
  6. namespace rack_plugin_DrumKit {
  7. struct BD9Module : DrumModule {
  8. void setupSamples( ) override;
  9. };
  10. void BD9Module::setupSamples( ) {
  11. samples[0] = { (float *)kick1, kick1_len };
  12. samples[1] = { (float *)kick2, kick2_len };
  13. samples[2] = { (float *)kick3, kick3_len };
  14. samples[3] = { (float *)kick4, kick4_len };
  15. samples[4] = { (float *)kick5, kick5_len };
  16. samples[5] = { (float *)kick6, kick6_len };
  17. samples[6] = { (float *)kick7, kick7_len };
  18. samples[7] = { (float *)kick8, kick8_len };
  19. samples[8] = { (float *)kick9, kick9_len };
  20. samples[9] = { (float *)kick10, kick10_len };
  21. samples[10] = { (float *)kick11, kick11_len };
  22. samples[11] = { (float *)kick12, kick12_len };
  23. samples[12] = { (float *)kick13, kick13_len };
  24. samples[13] = { (float *)kick14, kick14_len };
  25. samples[14] = { (float *)kick15, kick15_len };
  26. samples[15] = { (float *)kick16, kick16_len };
  27. numSamples = 16;
  28. }
  29. struct BD9Widget : ModuleWidget {
  30. BD9Widget(BD9Module *module);
  31. };
  32. BD9Widget::BD9Widget(BD9Module *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/BD9.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, BD9Module::CLOCK1_INPUT));
  45. addParam(ParamWidget::create<RoundBlackSnapKnob>(
  46. Vec(8, 92), module, BD9Module::DRUM1_PARAM, 1.0, 16.0, 8.0));
  47. addOutput(
  48. Port::create<PJ301MPort>(Vec(10, 149), Port::OUTPUT, module, BD9Module::AUDIO1_OUTPUT));
  49. addInput(
  50. Port::create<PJ301MPort>(Vec(10, 205), Port::INPUT, module, BD9Module::CLOCK2_INPUT));
  51. addParam(ParamWidget::create<RoundBlackSnapKnob>(
  52. Vec(8, 252), module, BD9Module::DRUM2_PARAM, 1.0, 16.0, 8.0));
  53. addOutput(
  54. Port::create<PJ301MPort>(Vec(10, 308), Port::OUTPUT, module, BD9Module::AUDIO2_OUTPUT));
  55. }
  56. } // namespace rack_plugin_DrumKit
  57. using namespace rack_plugin_DrumKit;
  58. RACK_PLUGIN_MODEL_INIT(DrumKit, BD9) {
  59. Model *modelBD9 = Model::create<BD9Module, BD9Widget>("DrumKit", "Bass Drum 9", "Bass Drum 9", DRUM_TAG);
  60. return modelBD9;
  61. }