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.

86 lines
1.9KB

  1. #include "plugin.hpp"
  2. Plugin* pluginInstance;
  3. void init(Plugin* p) {
  4. pluginInstance = p;
  5. p->addModel(modelVCO);
  6. p->addModel(modelVCO2);
  7. p->addModel(modelVCF);
  8. p->addModel(modelVCA_1);
  9. p->addModel(modelVCA);
  10. p->addModel(modelLFO);
  11. p->addModel(modelLFO2);
  12. p->addModel(modelDelay);
  13. p->addModel(modelADSR);
  14. p->addModel(modelMixer);
  15. p->addModel(modelVCMixer);
  16. p->addModel(model_8vert);
  17. p->addModel(modelUnity);
  18. p->addModel(modelMutes);
  19. p->addModel(modelPulses);
  20. p->addModel(modelScope);
  21. p->addModel(modelSEQ3);
  22. p->addModel(modelSequentialSwitch1);
  23. p->addModel(modelSequentialSwitch2);
  24. p->addModel(modelOctave);
  25. p->addModel(modelQuantizer);
  26. p->addModel(modelSplit);
  27. p->addModel(modelMerge);
  28. p->addModel(modelSum);
  29. p->addModel(modelViz);
  30. p->addModel(modelMidSide);
  31. p->addModel(modelNoise);
  32. p->addModel(modelRandom);
  33. p->addModel(modelCVMix);
  34. p->addModel(modelFade);
  35. p->addModel(modelLogic);
  36. p->addModel(modelCompare);
  37. p->addModel(modelGates);
  38. p->addModel(modelProcess);
  39. p->addModel(modelMult);
  40. p->addModel(modelRescale);
  41. p->addModel(modelRandomValues);
  42. p->addModel(modelPush);
  43. p->addModel(modelSHASR);
  44. }
  45. MenuItem* createRangeItem(std::string label, float* gain, float* offset) {
  46. struct Range {
  47. float gain;
  48. float offset;
  49. bool operator==(const Range& other) const {
  50. return gain == other.gain && offset == other.offset;
  51. }
  52. };
  53. static const std::vector<Range> ranges = {
  54. {10.f, 0.f},
  55. {5.f, 0.f},
  56. {1.f, 0.f},
  57. {20.f, -10.f},
  58. {10.f, -5.f},
  59. {2.f, -1.f},
  60. };
  61. static std::vector<std::string> labels;
  62. if (labels.empty()) {
  63. for (const Range& range : ranges) {
  64. labels.push_back(string::f("%gV to %gV", range.offset, range.offset + range.gain));
  65. }
  66. }
  67. return createIndexSubmenuItem(label, labels,
  68. [=]() {
  69. auto it = std::find(ranges.begin(), ranges.end(), Range{*gain, *offset});
  70. return std::distance(ranges.begin(), it);
  71. },
  72. [=](int i) {
  73. *gain = ranges[i].gain;
  74. *offset = ranges[i].offset;
  75. }
  76. );
  77. }