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.

276 lines
5.3KB

  1. #include "Rack.hpp"
  2. using namespace rack;
  3. ////////////////////
  4. // helpers
  5. ////////////////////
  6. struct AudiblePanel : ModulePanel {
  7. AudiblePanel() {
  8. backgroundColor = nvgRGBf(0.85, 0.85, 0.85);
  9. }
  10. };
  11. ////////////////////
  12. // knobs
  13. ////////////////////
  14. struct AudibleKnob : Knob {
  15. AudibleKnob() {
  16. minIndex = 44;
  17. maxIndex = -46;
  18. spriteCount = 120;
  19. }
  20. };
  21. struct HugeGlowKnob : AudibleKnob {
  22. HugeGlowKnob() {
  23. box.size = Vec(91, 91);
  24. spriteOffset = Vec(-10, -9);
  25. spriteSize = Vec(110, 110);
  26. spriteFilename = "plugins/AudibleInstruments/res/knob_huge_glow.png";
  27. minIndex = 44+5;
  28. maxIndex = -46-5;
  29. }
  30. };
  31. struct LargeKnob : AudibleKnob {
  32. LargeKnob() {
  33. box.size = Vec(52, 52);
  34. spriteOffset = Vec(-5, -4);
  35. spriteSize = Vec(65, 66);
  36. }
  37. };
  38. struct LargeWhiteKnob : LargeKnob {
  39. LargeWhiteKnob() {
  40. spriteFilename = "plugins/AudibleInstruments/res/knob_large_white.png";
  41. }
  42. };
  43. struct LargeRedKnob : LargeKnob {
  44. LargeRedKnob() {
  45. spriteFilename = "plugins/AudibleInstruments/res/knob_large_red.png";
  46. }
  47. };
  48. struct LargeGreenKnob : LargeKnob {
  49. LargeGreenKnob() {
  50. spriteFilename = "plugins/AudibleInstruments/res/knob_large_green.png";
  51. }
  52. };
  53. struct MediumKnob : AudibleKnob {
  54. MediumKnob() {
  55. box.size = Vec(44, 44);
  56. spriteOffset = Vec(-5, -4);
  57. spriteSize = Vec(57, 58);
  58. }
  59. };
  60. struct MediumWhiteKnob : MediumKnob {
  61. MediumWhiteKnob() {
  62. spriteFilename = "plugins/AudibleInstruments/res/knob_medium_white.png";
  63. }
  64. };
  65. struct MediumRedKnob : MediumKnob {
  66. MediumRedKnob() {
  67. spriteFilename = "plugins/AudibleInstruments/res/knob_medium_red.png";
  68. }
  69. };
  70. struct MediumGreenKnob : MediumKnob {
  71. MediumGreenKnob() {
  72. spriteFilename = "plugins/AudibleInstruments/res/knob_medium_green.png";
  73. }
  74. };
  75. struct SmallKnob : AudibleKnob {
  76. SmallKnob() {
  77. box.size = Vec(40, 40);
  78. spriteOffset = Vec(-5, -4);
  79. spriteSize = Vec(53, 54);
  80. }
  81. };
  82. struct SmallWhiteKnob : SmallKnob {
  83. SmallWhiteKnob() {
  84. spriteFilename = "plugins/AudibleInstruments/res/knob_small_white.png";
  85. }
  86. };
  87. struct SmallRedKnob : SmallKnob {
  88. SmallRedKnob() {
  89. spriteFilename = "plugins/AudibleInstruments/res/knob_small_red.png";
  90. }
  91. };
  92. struct SmallGreenKnob : SmallKnob {
  93. SmallGreenKnob() {
  94. spriteFilename = "plugins/AudibleInstruments/res/knob_small_green.png";
  95. }
  96. };
  97. struct TinyBlackKnob : AudibleKnob {
  98. TinyBlackKnob() {
  99. box.size = Vec(18, 18);
  100. spriteOffset = Vec(-5, -3);
  101. spriteSize = Vec(31, 30);
  102. spriteFilename = "plugins/AudibleInstruments/res/knob_tiny_black.png";
  103. }
  104. };
  105. ////////////////////
  106. // switches
  107. ////////////////////
  108. struct LargeSwitch : virtual Switch {
  109. LargeSwitch() {
  110. box.size = Vec(27, 27);
  111. spriteOffset = Vec(-3, -2);
  112. spriteSize = Vec(36, 36);
  113. spriteFilename = "plugins/AudibleInstruments/res/button_large_black.png";
  114. }
  115. };
  116. struct MediumSwitch : virtual Switch {
  117. MediumSwitch() {
  118. box.size = Vec(15, 15);
  119. spriteOffset = Vec(-4, -2);
  120. spriteSize = Vec(25, 25);
  121. spriteFilename = "plugins/AudibleInstruments/res/button_medium_black.png";
  122. }
  123. };
  124. struct LargeMomentarySwitch : LargeSwitch, MomentarySwitch {};
  125. struct MediumMomentarySwitch : MediumSwitch, MomentarySwitch {};
  126. struct LargeToggleSwitch : LargeSwitch, ToggleSwitch {};
  127. struct MediumToggleSwitch : MediumSwitch, ToggleSwitch {};
  128. struct SlideSwitch : Switch {
  129. SlideSwitch() {
  130. box.size = Vec(11, 21);
  131. spriteOffset = Vec(-1, -1);
  132. spriteSize = Vec(12, 22);
  133. spriteFilename = "plugins/AudibleInstruments/res/slide_switch.png";
  134. }
  135. void step() {
  136. index = (value == minValue) ? 0 : 1;
  137. }
  138. void onDragDrop(Widget *origin) {
  139. if (origin != this)
  140. return;
  141. if (value == minValue) {
  142. setValue(maxValue);
  143. }
  144. else {
  145. setValue(minValue);
  146. }
  147. }
  148. };
  149. ////////////////////
  150. // lights
  151. ////////////////////
  152. struct ValueLight : virtual Light {
  153. float *value = NULL;
  154. void step();
  155. };
  156. struct ModeLight : ValueLight {
  157. void step();
  158. };
  159. struct SmallLight : virtual Light {
  160. SmallLight() {
  161. box.size = Vec(7, 7);
  162. spriteOffset = Vec(-16, -16);
  163. spriteSize = Vec(38, 38);
  164. spriteFilename = "plugins/AudibleInstruments/res/light_small.png";
  165. }
  166. };
  167. struct MediumLight : virtual Light {
  168. MediumLight() {
  169. box.size = Vec(14, 14);
  170. spriteOffset = Vec(-16, -15);
  171. spriteSize = Vec(45, 45);
  172. spriteFilename = "plugins/AudibleInstruments/res/light_medium.png";
  173. }
  174. };
  175. struct SmallValueLight : SmallLight, ValueLight {};
  176. struct MediumValueLight : MediumLight, ValueLight {};
  177. struct SmallModeLight : SmallLight, ModeLight {};
  178. template <class TLight>
  179. ValueLight *createValueLight(Vec pos, float *value) {
  180. ValueLight *light = new TLight();
  181. light->box.pos = pos;
  182. light->value = value;
  183. return light;
  184. }
  185. ////////////////////
  186. // module widgets
  187. ////////////////////
  188. struct BraidsWidget : ModuleWidget {
  189. BraidsWidget();
  190. };
  191. struct ElementsWidget : ModuleWidget {
  192. ElementsWidget();
  193. };
  194. struct TidesWidget : ModuleWidget {
  195. TidesWidget();
  196. };
  197. struct StreamsWidget : ModuleWidget {
  198. StreamsWidget();
  199. };
  200. struct CloudsWidget : ModuleWidget {
  201. CloudsWidget();
  202. };
  203. struct WarpsWidget : ModuleWidget {
  204. WarpsWidget();
  205. };
  206. struct RingsWidget : ModuleWidget {
  207. RingsWidget();
  208. };
  209. struct LinksWidget : ModuleWidget {
  210. LinksWidget();
  211. };
  212. struct KinksWidget : ModuleWidget {
  213. KinksWidget();
  214. };
  215. struct ShadesWidget : ModuleWidget {
  216. ShadesWidget();
  217. };
  218. struct BranchesWidget : ModuleWidget {
  219. BranchesWidget();
  220. };
  221. struct BlindsWidget : ModuleWidget {
  222. BlindsWidget();
  223. };
  224. struct VeilsWidget : ModuleWidget {
  225. VeilsWidget();
  226. };