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.

76 lines
2.6KB

  1. #include <stdint.h>
  2. #include "../deps/SynthDevKit/src/CV.hpp"
  3. #include "DrumKit.hpp"
  4. #include "DrumModule.hpp"
  5. #include "openhh.h"
  6. namespace rack_plugin_DrumKit {
  7. struct OpenHHModule : DrumModule {
  8. void setupSamples( ) override;
  9. };
  10. void OpenHHModule::setupSamples( ) {
  11. samples[0] = { (float *)openhh1, openhh1_len };
  12. samples[1] = { (float *)openhh2, openhh2_len };
  13. samples[2] = { (float *)openhh3, openhh3_len };
  14. samples[3] = { (float *)openhh4, openhh4_len };
  15. samples[4] = { (float *)openhh5, openhh5_len };
  16. samples[5] = { (float *)openhh6, openhh6_len };
  17. samples[6] = { (float *)openhh7, openhh7_len };
  18. samples[7] = { (float *)openhh8, openhh8_len };
  19. samples[8] = { (float *)openhh9, openhh9_len };
  20. samples[9] = { (float *)openhh10, openhh10_len };
  21. samples[10] = { (float *)openhh11, openhh11_len };
  22. samples[11] = { (float *)openhh12, openhh12_len };
  23. samples[12] = { (float *)openhh13, openhh13_len };
  24. samples[13] = { (float *)openhh14, openhh14_len };
  25. numSamples = 14;
  26. }
  27. struct OpenHHWidget : ModuleWidget {
  28. OpenHHWidget(OpenHHModule *module);
  29. };
  30. OpenHHWidget::OpenHHWidget(OpenHHModule *module) : ModuleWidget(module) {
  31. box.size = Vec(3 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT);
  32. {
  33. SVGPanel *panel = new SVGPanel( );
  34. panel->box.size = box.size;
  35. panel->setBackground(SVG::load(assetPlugin(plugin, "res/OpenHH.svg")));
  36. addChild(panel);
  37. }
  38. addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
  39. addChild(Widget::create<ScrewSilver>(
  40. Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
  41. addInput(Port::create<PJ301MPort>(Vec(10, 45), Port::INPUT, module,
  42. OpenHHModule::CLOCK1_INPUT));
  43. addParam(ParamWidget::create<RoundBlackSnapKnob>(
  44. Vec(8, 92), module, OpenHHModule::DRUM1_PARAM, 1.0, 14.0, 7.0));
  45. addOutput(Port::create<PJ301MPort>(Vec(10, 149), Port::OUTPUT, module,
  46. OpenHHModule::AUDIO1_OUTPUT));
  47. addInput(Port::create<PJ301MPort>(Vec(10, 205), Port::INPUT, module,
  48. OpenHHModule::CLOCK2_INPUT));
  49. addParam(ParamWidget::create<RoundBlackSnapKnob>(
  50. Vec(8, 252), module, OpenHHModule::DRUM2_PARAM, 1.0, 14.0, 7.0));
  51. addOutput(Port::create<PJ301MPort>(Vec(10, 308), Port::OUTPUT, module,
  52. OpenHHModule::AUDIO2_OUTPUT));
  53. }
  54. } // namespace rack_plugin_DrumKit
  55. using namespace rack_plugin_DrumKit;
  56. RACK_PLUGIN_MODEL_INIT(DrumKit, OpenHH) {
  57. Model *modelOpenHH = Model::create<OpenHHModule, OpenHHWidget>("DrumKit", "Open HiHat", "Open HiHat", DRUM_TAG);
  58. return modelOpenHH;
  59. }