External plugins for Carla
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.

1445 lines
59KB

  1. // generated by Fast Light User Interface Designer (fluid) version 1.0300
  2. #include "external/zynaddsubfx/UI/PADnoteUI.h"
  3. #include <math.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include "Osc_IntModel.h"
  8. void PADnoteUI::cb__i(Fl_Tabs* o, void*) {
  9. if (o->value()!=harmonicstructuregroup) applybutton->hide();
  10. else applybutton->show();
  11. }
  12. void PADnoteUI::cb_(Fl_Tabs* o, void* v) {
  13. ((PADnoteUI*)(o->parent()->user_data()))->cb__i(o,v);
  14. }
  15. void PADnoteUI::cb_hpbasepar1_i(Fl_Osc_Dial*, void*) {
  16. if(hpui) hpui->update();
  17. cbwidget->do_callback();
  18. }
  19. void PADnoteUI::cb_hpbasepar1(Fl_Osc_Dial* o, void* v) {
  20. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hpbasepar1_i(o,v);
  21. }
  22. void PADnoteUI::cb_hpbasetype_i(Fl_Osc_Choice*, void*) {
  23. if(initialized) {hprofile->redraw();
  24. hpui->update();
  25. cbwidget->do_callback();};
  26. }
  27. void PADnoteUI::cb_hpbasetype(Fl_Osc_Choice* o, void* v) {
  28. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hpbasetype_i(o,v);
  29. }
  30. Fl_Menu_Item PADnoteUI::menu_hpbasetype[] = {
  31. {"Gauss", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  32. {"Square", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  33. {"DoubleExp", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  34. {0,0,0,0,0,0,0,0,0}
  35. };
  36. void PADnoteUI::cb_hpfreqmult_i(Fl_Osc_Dial*, void*) {
  37. hpui->update();
  38. cbwidget->do_callback();
  39. }
  40. void PADnoteUI::cb_hpfreqmult(Fl_Osc_Dial* o, void* v) {
  41. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hpfreqmult_i(o,v);
  42. }
  43. void PADnoteUI::cb_hpmpar1_i(Fl_Osc_Dial*, void*) {
  44. hpui->update();
  45. cbwidget->do_callback();
  46. }
  47. void PADnoteUI::cb_hpmpar1(Fl_Osc_Dial* o, void* v) {
  48. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hpmpar1_i(o,v);
  49. }
  50. void PADnoteUI::cb_hpmfreq_i(Fl_Osc_Dial*, void*) {
  51. hpui->update();
  52. cbwidget->do_callback();
  53. }
  54. void PADnoteUI::cb_hpmfreq(Fl_Osc_Dial* o, void* v) {
  55. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hpmfreq_i(o,v);
  56. }
  57. void PADnoteUI::cb_hpamptype_i(Fl_Osc_Choice*, void*) {
  58. if(initialized) {hprofile->redraw();
  59. hpui->update();
  60. cbwidget->do_callback();};
  61. }
  62. void PADnoteUI::cb_hpamptype(Fl_Osc_Choice* o, void* v) {
  63. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_hpamptype_i(o,v);
  64. }
  65. Fl_Menu_Item PADnoteUI::menu_hpamptype[] = {
  66. {"OFF", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  67. {"Gauss", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  68. {"Sine", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  69. {"Flat", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  70. {0,0,0,0,0,0,0,0,0}
  71. };
  72. void PADnoteUI::cb_hpampmode_i(Fl_Osc_Choice*, void*) {
  73. if(initialized) {hpui->update();
  74. cbwidget->do_callback();};
  75. }
  76. void PADnoteUI::cb_hpampmode(Fl_Osc_Choice* o, void* v) {
  77. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_hpampmode_i(o,v);
  78. }
  79. Fl_Menu_Item PADnoteUI::menu_hpampmode[] = {
  80. {"Sum", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  81. {"Mult", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  82. {"Div1", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  83. {"Div2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  84. {0,0,0,0,0,0,0,0,0}
  85. };
  86. void PADnoteUI::cb_hpamppar1_i(Fl_Osc_Dial*, void*) {
  87. hpui->update();
  88. cbwidget->do_callback();
  89. }
  90. void PADnoteUI::cb_hpamppar1(Fl_Osc_Dial* o, void* v) {
  91. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_hpamppar1_i(o,v);
  92. }
  93. void PADnoteUI::cb_hpamppar2_i(Fl_Osc_Dial*, void*) {
  94. hpui->update();
  95. cbwidget->do_callback();
  96. }
  97. void PADnoteUI::cb_hpamppar2(Fl_Osc_Dial* o, void* v) {
  98. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_hpamppar2_i(o,v);
  99. }
  100. void PADnoteUI::cb_hpautoscale_i(Fl_Osc_Check*, void*) {
  101. if(initialized) {
  102. hpui->update();
  103. hprofile->redraw();
  104. cbwidget->do_callback();};
  105. }
  106. void PADnoteUI::cb_hpautoscale(Fl_Osc_Check* o, void* v) {
  107. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hpautoscale_i(o,v);
  108. }
  109. void PADnoteUI::cb_hponehalf_i(Fl_Osc_Choice*, void*) {
  110. if(initialized) {hprofile->redraw();
  111. hpui->update();
  112. cbwidget->do_callback();};
  113. }
  114. void PADnoteUI::cb_hponehalf(Fl_Osc_Choice* o, void* v) {
  115. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hponehalf_i(o,v);
  116. }
  117. Fl_Menu_Item PADnoteUI::menu_hponehalf[] = {
  118. {"Full", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  119. {"Upper Half", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  120. {"Lower Half", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  121. {0,0,0,0,0,0,0,0,0}
  122. };
  123. void PADnoteUI::cb_hpwidth_i(Fl_Osc_Dial*, void*) {
  124. hpui->update();
  125. cbwidget->do_callback();
  126. }
  127. void PADnoteUI::cb_hpwidth(Fl_Osc_Dial* o, void* v) {
  128. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hpwidth_i(o,v);
  129. }
  130. void PADnoteUI::cb_Change_i(Fl_Button*, void*) {
  131. if (oscui!=NULL) delete (oscui);
  132. oscui=new OscilEditor(false, location+"oscilgen/",osc_i);
  133. }
  134. void PADnoteUI::cb_Change(Fl_Button* o, void* v) {
  135. ((PADnoteUI*)(o->parent()->parent()->parent()->user_data()))->cb_Change_i(o,v);
  136. }
  137. void PADnoteUI::cb_cbwidget_i(Fl_Box*, void*) {
  138. opui->update();
  139. if(applybutton) {
  140. applybutton->color(FL_RED);
  141. applybutton->redraw();};
  142. }
  143. void PADnoteUI::cb_cbwidget(Fl_Box* o, void* v) {
  144. ((PADnoteUI*)(o->parent()->parent()->parent()->user_data()))->cb_cbwidget_i(o,v);
  145. }
  146. void PADnoteUI::cb_Resonance_i(Fl_Button*, void*) {
  147. resui->resonancewindow->redraw();
  148. resui->resonancewindow->show();
  149. resui->setcbwidget(cbwidget,applybutton);
  150. }
  151. void PADnoteUI::cb_Resonance(Fl_Button* o, void* v) {
  152. ((PADnoteUI*)(o->parent()->parent()->parent()->user_data()))->cb_Resonance_i(o,v);
  153. }
  154. void PADnoteUI::cb_bwdial_i(Fl_Osc_Dial* o, void*) {
  155. o->oscWrite("bandwidthvalue");cbwidget->do_callback();
  156. }
  157. void PADnoteUI::cb_bwdial(Fl_Osc_Dial* o, void* v) {
  158. ((PADnoteUI*)(o->parent()->parent()->parent()->user_data()))->cb_bwdial_i(o,v);
  159. }
  160. void PADnoteUI::cb_hrpostype_i(Fl_Osc_Choice*, void*) {
  161. if(initialized) {opui->update();
  162. cbwidget->do_callback();};
  163. }
  164. void PADnoteUI::cb_hrpostype(Fl_Osc_Choice* o, void* v) {
  165. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hrpostype_i(o,v);
  166. }
  167. Fl_Menu_Item PADnoteUI::menu_hrpostype[] = {
  168. {"Harmonic", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  169. {"ShiftU", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  170. {"ShiftL", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  171. {"PowerU", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  172. {"PowerL", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  173. {"Sine", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  174. {"Power", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  175. {"Shift", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  176. {0,0,0,0,0,0,0,0,0}
  177. };
  178. void PADnoteUI::cb_hrpospar1_i(Fl_Osc_Dial*, void*) {
  179. opui->update();
  180. hpui->update();
  181. cbwidget->do_callback();
  182. }
  183. void PADnoteUI::cb_hrpospar1(Fl_Osc_Dial* o, void* v) {
  184. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hrpospar1_i(o,v);
  185. }
  186. void PADnoteUI::cb_hrpospar2_i(Fl_Osc_Dial*, void*) {
  187. opui->update();
  188. cbwidget->do_callback();
  189. }
  190. void PADnoteUI::cb_hrpospar2(Fl_Osc_Dial* o, void* v) {
  191. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hrpospar2_i(o,v);
  192. }
  193. void PADnoteUI::cb_hrpospar3_i(Fl_Osc_Dial*, void*) {
  194. opui->update();
  195. cbwidget->do_callback();
  196. }
  197. void PADnoteUI::cb_hrpospar3(Fl_Osc_Dial* o, void* v) {
  198. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hrpospar3_i(o,v);
  199. }
  200. void PADnoteUI::cb_bwscale_i(Fl_Osc_Choice*, void*) {
  201. if(initialized) {cbwidget->do_callback();};
  202. }
  203. void PADnoteUI::cb_bwscale(Fl_Osc_Choice* o, void* v) {
  204. ((PADnoteUI*)(o->parent()->parent()->parent()->user_data()))->cb_bwscale_i(o,v);
  205. }
  206. Fl_Menu_Item PADnoteUI::menu_bwscale[] = {
  207. {"Normal", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  208. {"EqualHz", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  209. {"Quater", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  210. {"Half", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  211. {"75%", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  212. {"150%", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  213. {"Double", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  214. {"Inv.Half", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  215. {0,0,0,0,0,0,0,0,0}
  216. };
  217. void PADnoteUI::cb_qsamplesize_i(Fl_Osc_Choice*, void*) {
  218. if(initialized) {cbwidget->do_callback();};
  219. }
  220. void PADnoteUI::cb_qsamplesize(Fl_Osc_Choice* o, void* v) {
  221. ((PADnoteUI*)(o->parent()->parent()->parent()->user_data()))->cb_qsamplesize_i(o,v);
  222. }
  223. Fl_Menu_Item PADnoteUI::menu_qsamplesize[] = {
  224. {"16k (Tiny)", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  225. {"32k", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  226. {"64k (Small)", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  227. {"128k", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  228. {"256k (Normal)", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  229. {"512k", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  230. {"1M (Big)", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  231. {0,0,0,0,0,0,0,0,0}
  232. };
  233. void PADnoteUI::cb_qsmpoct_i(Fl_Osc_Choice*, void*) {
  234. if(initialized) cbwidget->do_callback();
  235. }
  236. void PADnoteUI::cb_qsmpoct(Fl_Osc_Choice* o, void* v) {
  237. ((PADnoteUI*)(o->parent()->parent()->parent()->user_data()))->cb_qsmpoct_i(o,v);
  238. }
  239. Fl_Menu_Item PADnoteUI::menu_qsmpoct[] = {
  240. {"0.5", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  241. {"1", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  242. {"2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  243. {"3", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  244. {"4", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  245. {"6", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  246. {"12", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  247. {0,0,0,0,0,0,0,0,0}
  248. };
  249. void PADnoteUI::cb_qoct_i(Fl_Osc_Choice*, void*) {
  250. if(initialized) cbwidget->do_callback();
  251. }
  252. void PADnoteUI::cb_qoct(Fl_Osc_Choice* o, void* v) {
  253. ((PADnoteUI*)(o->parent()->parent()->parent()->user_data()))->cb_qoct_i(o,v);
  254. }
  255. Fl_Menu_Item PADnoteUI::menu_qoct[] = {
  256. {"1", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  257. {"2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  258. {"3", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  259. {"4", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  260. {"5", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  261. {"6", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  262. {"7", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  263. {"8", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  264. {0,0,0,0,0,0,0,0,0}
  265. };
  266. void PADnoteUI::cb_qbasenote_i(Fl_Osc_Choice*, void*) {
  267. if(initialized) cbwidget->do_callback();
  268. }
  269. void PADnoteUI::cb_qbasenote(Fl_Osc_Choice* o, void* v) {
  270. ((PADnoteUI*)(o->parent()->parent()->parent()->user_data()))->cb_qbasenote_i(o,v);
  271. }
  272. Fl_Menu_Item PADnoteUI::menu_qbasenote[] = {
  273. {"C-2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  274. {"G-2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  275. {"C-3", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  276. {"G-3", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  277. {"C-4", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  278. {"G-4", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  279. {"C-5", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  280. {"G-5", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  281. {"G-6", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  282. {0,0,0,0,0,0,0,0,0}
  283. };
  284. void PADnoteUI::cb_spectrummode_i(Fl_Osc_Choice* o, void*) {
  285. if (o->value()==0){
  286. bwprofilegroup->activate();
  287. bwdial->activate();
  288. bwcents->activate();
  289. hprofile->activate();
  290. hprofile->color(51);
  291. bwscale->activate();
  292. } else {
  293. bwprofilegroup->deactivate();
  294. bwdial->deactivate();
  295. bwcents->deactivate();
  296. hprofile->deactivate();
  297. hprofile->color(48);
  298. bwscale->deactivate();
  299. };
  300. hpui->update();
  301. cbwidget->do_callback();
  302. }
  303. void PADnoteUI::cb_spectrummode(Fl_Osc_Choice* o, void* v) {
  304. ((PADnoteUI*)(o->parent()->parent()->parent()->user_data()))->cb_spectrummode_i(o,v);
  305. }
  306. Fl_Menu_Item PADnoteUI::menu_spectrummode[] = {
  307. {"Bandwidth", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  308. {"Discrete", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  309. {"Continuous", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  310. {0,0,0,0,0,0,0,0,0}
  311. };
  312. void PADnoteUI::cb_detune_i(Fl_Osc_Slider* o, void*) {
  313. o->oscWrite("detunevalue");
  314. }
  315. void PADnoteUI::cb_detune(Fl_Osc_Slider* o, void* v) {
  316. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_detune_i(o,v);
  317. }
  318. void PADnoteUI::cb_detunetype_i(Fl_Osc_Choice* o, void*) {
  319. o->oscWrite("detunevalue");
  320. }
  321. void PADnoteUI::cb_detunetype(Fl_Osc_Choice* o, void* v) {
  322. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_detunetype_i(o,v);
  323. }
  324. void PADnoteUI::cb_hz440_i(Fl_Osc_Check* o, void*) {
  325. if (o->value()==0) fixedfreqetdial->deactivate();
  326. else fixedfreqetdial->activate();
  327. }
  328. void PADnoteUI::cb_hz440(Fl_Osc_Check* o, void* v) {
  329. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_hz440_i(o,v);
  330. }
  331. void PADnoteUI::cb_stereo_i(Fl_Osc_Check*, void*) {
  332. hprofile->redraw();
  333. }
  334. void PADnoteUI::cb_stereo(Fl_Osc_Check* o, void* v) {
  335. ((PADnoteUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_stereo_i(o,v);
  336. }
  337. void PADnoteUI::cb_applybutton_i(Fl_Button* o, void*) {
  338. osc_i->requestValue(location+"prepare");
  339. //MiddleWare::preparePadSynth(location.c_str(), pars);
  340. o->color(FL_GRAY);
  341. if (oscui!=NULL) {
  342. oscui->applybutton->color(FL_GRAY);
  343. oscui->applybutton->redraw();
  344. };
  345. if (resui!=NULL) {
  346. resui->applybutton->color(FL_GRAY);
  347. resui->applybutton->redraw();
  348. };
  349. }
  350. void PADnoteUI::cb_applybutton(Fl_Button* o, void* v) {
  351. ((PADnoteUI*)(o->parent()->user_data()))->cb_applybutton_i(o,v);
  352. }
  353. void PADnoteUI::cb_Close_i(Fl_Button*, void*) {
  354. padnotewindow->hide();
  355. }
  356. void PADnoteUI::cb_Close(Fl_Button* o, void* v) {
  357. ((PADnoteUI*)(o->parent()->user_data()))->cb_Close_i(o,v);
  358. }
  359. void PADnoteUI::cb_C_i(Fl_Button*, void*) {
  360. presetsui->copy(padnotewindow->loc());
  361. }
  362. void PADnoteUI::cb_C(Fl_Button* o, void* v) {
  363. ((PADnoteUI*)(o->parent()->user_data()))->cb_C_i(o,v);
  364. }
  365. void PADnoteUI::cb_P_i(Fl_Button*, void*) {
  366. presetsui->paste(padnotewindow->loc(),this);
  367. }
  368. void PADnoteUI::cb_P(Fl_Button* o, void* v) {
  369. ((PADnoteUI*)(o->parent()->user_data()))->cb_P_i(o,v);
  370. }
  371. void PADnoteUI::cb_export_i(Fl_Osc_Button* o, void*) {
  372. char *filename;
  373. filename=fl_file_chooser("Export samples:","(*.wav)",NULL,0);
  374. if (filename==NULL) return;
  375. fl_filename_setext(filename,"");
  376. o->oscWrite("export2wav", "s", filename);
  377. }
  378. void PADnoteUI::cb_export(Fl_Osc_Button* o, void* v) {
  379. ((PADnoteUI*)(o->parent()->user_data()))->cb_export_i(o,v);
  380. }
  381. PADnoteUI::PADnoteUI(std::string location_, Fl_Osc_Interface *osc_) {
  382. assert(osc_);
  383. assert(!location_.empty());
  384. location=location_;
  385. oscui=NULL;
  386. osc_i = osc_;
  387. resui=new ResonanceUI(osc_i, location+"resonance/");
  388. initialized = false;
  389. applybutton = NULL;
  390. make_window();
  391. apply_watcher = new Osc_IntModel(osc_i);
  392. apply_watcher->callback=[this](int needsPrepare) {
  393. if(needsPrepare) {
  394. applybutton->color(FL_RED);
  395. applybutton->redraw();
  396. if(oscui) {
  397. oscui->applybutton->color(FL_RED);
  398. oscui->applybutton->redraw();
  399. }
  400. if(resui) {
  401. resui->applybutton->color(FL_RED);
  402. resui->applybutton->redraw();
  403. }
  404. } else {
  405. applybutton->color(FL_GRAY);
  406. applybutton->redraw();
  407. if(oscui) {
  408. oscui->applybutton->color(FL_GRAY);
  409. oscui->applybutton->redraw();
  410. }
  411. if(resui) {
  412. resui->applybutton->color(FL_GRAY);
  413. resui->applybutton->redraw();
  414. }
  415. }
  416. };
  417. apply_watcher->doUpdate(location+"needPrepare");
  418. initialized = true;
  419. }
  420. Fl_Osc_Window* PADnoteUI::make_window() {
  421. { padnotewindow = new Fl_Osc_Window(535, 430, "PAD synth Parameters");
  422. padnotewindow->box(FL_FLAT_BOX);
  423. padnotewindow->color(FL_BACKGROUND_COLOR);
  424. padnotewindow->selection_color(FL_BACKGROUND_COLOR);
  425. padnotewindow->labeltype(FL_NO_LABEL);
  426. padnotewindow->labelfont(0);
  427. padnotewindow->labelsize(14);
  428. padnotewindow->labelcolor(FL_FOREGROUND_COLOR);
  429. padnotewindow->user_data((void*)(this));
  430. padnotewindow->align(Fl_Align(FL_ALIGN_TOP));
  431. padnotewindow->when(FL_WHEN_RELEASE);
  432. { dummy = new Fl_Box(25, 25, 25, 25);
  433. padnotewindow->init(osc_i, location);
  434. } // Fl_Box* dummy
  435. { Fl_Tabs* o = new Fl_Tabs(0, 0, 535, 395);
  436. o->box(FL_UP_FRAME);
  437. o->callback((Fl_Callback*)cb_);
  438. { harmonicstructuregroup = new Fl_Osc_Group(0, 20, 535, 375, "Harmonic Structure");
  439. harmonicstructuregroup->box(FL_UP_FRAME);
  440. harmonicstructuregroup->color(FL_BACKGROUND_COLOR);
  441. harmonicstructuregroup->selection_color(FL_BACKGROUND_COLOR);
  442. harmonicstructuregroup->labeltype(FL_NORMAL_LABEL);
  443. harmonicstructuregroup->labelfont(0);
  444. harmonicstructuregroup->labelsize(14);
  445. harmonicstructuregroup->labelcolor(FL_FOREGROUND_COLOR);
  446. harmonicstructuregroup->align(Fl_Align(FL_ALIGN_TOP));
  447. harmonicstructuregroup->when(FL_WHEN_RELEASE);
  448. { bwprofilegroup = new Fl_Osc_Group(5, 30, 90, 260);
  449. bwprofilegroup->box(FL_UP_FRAME);
  450. bwprofilegroup->color(FL_BACKGROUND_COLOR);
  451. bwprofilegroup->selection_color(FL_BACKGROUND_COLOR);
  452. bwprofilegroup->labeltype(FL_NORMAL_LABEL);
  453. bwprofilegroup->labelfont(0);
  454. bwprofilegroup->labelsize(14);
  455. bwprofilegroup->labelcolor(FL_FOREGROUND_COLOR);
  456. bwprofilegroup->align(Fl_Align(FL_ALIGN_TOP));
  457. bwprofilegroup->when(FL_WHEN_RELEASE);
  458. { Fl_Osc_Dial* o = hpbasepar1 = new Fl_Osc_Dial(20, 75, 25, 25, "Width");
  459. hpbasepar1->box(FL_ROUND_UP_BOX);
  460. hpbasepar1->color(FL_BACKGROUND_COLOR);
  461. hpbasepar1->selection_color(FL_INACTIVE_COLOR);
  462. hpbasepar1->labeltype(FL_NORMAL_LABEL);
  463. hpbasepar1->labelfont(0);
  464. hpbasepar1->labelsize(10);
  465. hpbasepar1->labelcolor(FL_FOREGROUND_COLOR);
  466. hpbasepar1->maximum(127);
  467. hpbasepar1->step(1);
  468. hpbasepar1->callback((Fl_Callback*)cb_hpbasepar1);
  469. hpbasepar1->align(Fl_Align(FL_ALIGN_TOP));
  470. hpbasepar1->when(FL_WHEN_CHANGED);
  471. o->init("Php.base.par1");o->reset_value=80;
  472. } // Fl_Osc_Dial* hpbasepar1
  473. { Fl_Osc_Choice* o = hpbasetype = new Fl_Osc_Choice(15, 45, 75, 15, "Base Type");
  474. hpbasetype->box(FL_UP_BOX);
  475. hpbasetype->down_box(FL_BORDER_BOX);
  476. hpbasetype->color(FL_BACKGROUND_COLOR);
  477. hpbasetype->selection_color(FL_SELECTION_COLOR);
  478. hpbasetype->labeltype(FL_NORMAL_LABEL);
  479. hpbasetype->labelfont(0);
  480. hpbasetype->labelsize(10);
  481. hpbasetype->labelcolor(FL_FOREGROUND_COLOR);
  482. hpbasetype->textsize(10);
  483. hpbasetype->callback((Fl_Callback*)cb_hpbasetype);
  484. hpbasetype->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  485. hpbasetype->when(FL_WHEN_RELEASE);
  486. hpbasetype->menu(menu_hpbasetype);
  487. o->init("Php.base.type");
  488. } // Fl_Osc_Choice* hpbasetype
  489. { Fl_Osc_Dial* o = hpfreqmult = new Fl_Osc_Dial(55, 75, 25, 25, "FreqMlt");
  490. hpfreqmult->box(FL_ROUND_UP_BOX);
  491. hpfreqmult->color(FL_BACKGROUND_COLOR);
  492. hpfreqmult->selection_color(FL_INACTIVE_COLOR);
  493. hpfreqmult->labeltype(FL_NORMAL_LABEL);
  494. hpfreqmult->labelfont(0);
  495. hpfreqmult->labelsize(10);
  496. hpfreqmult->labelcolor(FL_FOREGROUND_COLOR);
  497. hpfreqmult->maximum(127);
  498. hpfreqmult->step(1);
  499. hpfreqmult->callback((Fl_Callback*)cb_hpfreqmult);
  500. hpfreqmult->align(Fl_Align(FL_ALIGN_TOP));
  501. hpfreqmult->when(FL_WHEN_CHANGED);
  502. o->init("Php.freqmult");
  503. } // Fl_Osc_Dial* hpfreqmult
  504. { Fl_Osc_Dial* o = hpmpar1 = new Fl_Osc_Dial(15, 115, 20, 20, "Str");
  505. hpmpar1->box(FL_ROUND_UP_BOX);
  506. hpmpar1->color(FL_BACKGROUND_COLOR);
  507. hpmpar1->selection_color(FL_INACTIVE_COLOR);
  508. hpmpar1->labeltype(FL_NORMAL_LABEL);
  509. hpmpar1->labelfont(0);
  510. hpmpar1->labelsize(10);
  511. hpmpar1->labelcolor(FL_FOREGROUND_COLOR);
  512. hpmpar1->maximum(127);
  513. hpmpar1->step(1);
  514. hpmpar1->callback((Fl_Callback*)cb_hpmpar1);
  515. hpmpar1->align(Fl_Align(FL_ALIGN_TOP));
  516. hpmpar1->when(FL_WHEN_CHANGED);
  517. o->init("Php.modulator.par1");
  518. } // Fl_Osc_Dial* hpmpar1
  519. { Fl_Osc_Dial* o = hpmfreq = new Fl_Osc_Dial(40, 115, 20, 20, "SFreq");
  520. hpmfreq->box(FL_ROUND_UP_BOX);
  521. hpmfreq->color(FL_BACKGROUND_COLOR);
  522. hpmfreq->selection_color(FL_INACTIVE_COLOR);
  523. hpmfreq->labeltype(FL_NORMAL_LABEL);
  524. hpmfreq->labelfont(0);
  525. hpmfreq->labelsize(10);
  526. hpmfreq->labelcolor(FL_FOREGROUND_COLOR);
  527. hpmfreq->maximum(127);
  528. hpmfreq->step(1);
  529. hpmfreq->callback((Fl_Callback*)cb_hpmfreq);
  530. hpmfreq->align(Fl_Align(FL_ALIGN_TOP));
  531. hpmfreq->when(FL_WHEN_CHANGED);
  532. o->init("Php.modulator.freq");o->reset_value=30;
  533. } // Fl_Osc_Dial* hpmfreq
  534. { Fl_Group* o = new Fl_Group(10, 160, 80, 105);
  535. o->box(FL_BORDER_BOX);
  536. { Fl_Osc_Choice* o = hpamptype = new Fl_Osc_Choice(15, 175, 70, 15, "AmpMultiplier");
  537. hpamptype->box(FL_UP_BOX);
  538. hpamptype->down_box(FL_BORDER_BOX);
  539. hpamptype->color(FL_BACKGROUND_COLOR);
  540. hpamptype->selection_color(FL_SELECTION_COLOR);
  541. hpamptype->labeltype(FL_NORMAL_LABEL);
  542. hpamptype->labelfont(0);
  543. hpamptype->labelsize(10);
  544. hpamptype->labelcolor(FL_FOREGROUND_COLOR);
  545. hpamptype->textsize(10);
  546. hpamptype->callback((Fl_Callback*)cb_hpamptype);
  547. hpamptype->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  548. hpamptype->when(FL_WHEN_RELEASE);
  549. hpamptype->menu(menu_hpamptype);
  550. o->init("Php.amp.type");
  551. } // Fl_Osc_Choice* hpamptype
  552. { Fl_Osc_Choice* o = hpampmode = new Fl_Osc_Choice(15, 205, 70, 15, "AmpMode");
  553. hpampmode->box(FL_UP_BOX);
  554. hpampmode->down_box(FL_BORDER_BOX);
  555. hpampmode->color(FL_BACKGROUND_COLOR);
  556. hpampmode->selection_color(FL_SELECTION_COLOR);
  557. hpampmode->labeltype(FL_NORMAL_LABEL);
  558. hpampmode->labelfont(0);
  559. hpampmode->labelsize(10);
  560. hpampmode->labelcolor(FL_FOREGROUND_COLOR);
  561. hpampmode->textsize(10);
  562. hpampmode->callback((Fl_Callback*)cb_hpampmode);
  563. hpampmode->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  564. hpampmode->when(FL_WHEN_RELEASE);
  565. hpampmode->menu(menu_hpampmode);
  566. o->init("Php.amp.mode");
  567. } // Fl_Osc_Choice* hpampmode
  568. { Fl_Osc_Dial* o = hpamppar1 = new Fl_Osc_Dial(15, 235, 25, 25, "Par1");
  569. hpamppar1->box(FL_ROUND_UP_BOX);
  570. hpamppar1->color(FL_BACKGROUND_COLOR);
  571. hpamppar1->selection_color(FL_INACTIVE_COLOR);
  572. hpamppar1->labeltype(FL_NORMAL_LABEL);
  573. hpamppar1->labelfont(0);
  574. hpamppar1->labelsize(10);
  575. hpamppar1->labelcolor(FL_FOREGROUND_COLOR);
  576. hpamppar1->maximum(127);
  577. hpamppar1->step(1);
  578. hpamppar1->callback((Fl_Callback*)cb_hpamppar1);
  579. hpamppar1->align(Fl_Align(FL_ALIGN_TOP));
  580. hpamppar1->when(FL_WHEN_CHANGED);
  581. o->init("Php.amp.par1");o->reset_value=80;
  582. } // Fl_Osc_Dial* hpamppar1
  583. { Fl_Osc_Dial* o = hpamppar2 = new Fl_Osc_Dial(55, 235, 25, 25, "Par2");
  584. hpamppar2->box(FL_ROUND_UP_BOX);
  585. hpamppar2->color(FL_BACKGROUND_COLOR);
  586. hpamppar2->selection_color(FL_INACTIVE_COLOR);
  587. hpamppar2->labeltype(FL_NORMAL_LABEL);
  588. hpamppar2->labelfont(0);
  589. hpamppar2->labelsize(10);
  590. hpamppar2->labelcolor(FL_FOREGROUND_COLOR);
  591. hpamppar2->maximum(127);
  592. hpamppar2->step(1);
  593. hpamppar2->callback((Fl_Callback*)cb_hpamppar2);
  594. hpamppar2->align(Fl_Align(FL_ALIGN_TOP));
  595. hpamppar2->when(FL_WHEN_CHANGED);
  596. o->init("Php.amp.par2");o->reset_value=64;
  597. } // Fl_Osc_Dial* hpamppar2
  598. o->end();
  599. } // Fl_Group* o
  600. { Fl_Osc_Check* o = hpautoscale = new Fl_Osc_Check(10, 270, 60, 15, "autoscale");
  601. hpautoscale->box(FL_NO_BOX);
  602. hpautoscale->down_box(FL_DOWN_BOX);
  603. hpautoscale->color(FL_BACKGROUND_COLOR);
  604. hpautoscale->selection_color(FL_FOREGROUND_COLOR);
  605. hpautoscale->labeltype(FL_NORMAL_LABEL);
  606. hpautoscale->labelfont(0);
  607. hpautoscale->labelsize(10);
  608. hpautoscale->labelcolor(FL_FOREGROUND_COLOR);
  609. hpautoscale->callback((Fl_Callback*)cb_hpautoscale);
  610. hpautoscale->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  611. hpautoscale->when(FL_WHEN_RELEASE);
  612. o->init("Php.autoscale");
  613. } // Fl_Osc_Check* hpautoscale
  614. { Fl_Osc_Choice* o = hponehalf = new Fl_Osc_Choice(10, 143, 80, 15);
  615. hponehalf->box(FL_UP_BOX);
  616. hponehalf->down_box(FL_BORDER_BOX);
  617. hponehalf->color(FL_BACKGROUND_COLOR);
  618. hponehalf->selection_color(FL_SELECTION_COLOR);
  619. hponehalf->labeltype(FL_NORMAL_LABEL);
  620. hponehalf->labelfont(0);
  621. hponehalf->labelsize(10);
  622. hponehalf->labelcolor(FL_FOREGROUND_COLOR);
  623. hponehalf->textsize(10);
  624. hponehalf->callback((Fl_Callback*)cb_hponehalf);
  625. hponehalf->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  626. hponehalf->when(FL_WHEN_RELEASE);
  627. hponehalf->menu(menu_hponehalf);
  628. o->init("Php.onehalf");
  629. } // Fl_Osc_Choice* hponehalf
  630. { Fl_Osc_Dial* o = hpwidth = new Fl_Osc_Dial(65, 115, 20, 20, "Size");
  631. hpwidth->box(FL_ROUND_UP_BOX);
  632. hpwidth->color(FL_BACKGROUND_COLOR);
  633. hpwidth->selection_color(FL_INACTIVE_COLOR);
  634. hpwidth->labeltype(FL_NORMAL_LABEL);
  635. hpwidth->labelfont(0);
  636. hpwidth->labelsize(10);
  637. hpwidth->labelcolor(FL_FOREGROUND_COLOR);
  638. hpwidth->maximum(127);
  639. hpwidth->step(1);
  640. hpwidth->callback((Fl_Callback*)cb_hpwidth);
  641. hpwidth->align(Fl_Align(FL_ALIGN_TOP));
  642. hpwidth->when(FL_WHEN_CHANGED);
  643. o->init("Php.width");o->reset_value=127;
  644. } // Fl_Osc_Dial* hpwidth
  645. bwprofilegroup->end();
  646. } // Fl_Osc_Group* bwprofilegroup
  647. { Fl_Osc_Group* o = oscilgroup = new Fl_Osc_Group(100, 155, 270, 135);
  648. oscilgroup->box(FL_THIN_DOWN_BOX);
  649. oscilgroup->color(FL_GRAY0);
  650. oscilgroup->selection_color((Fl_Color)71);
  651. oscilgroup->labeltype(FL_NORMAL_LABEL);
  652. oscilgroup->labelfont(0);
  653. oscilgroup->labelsize(14);
  654. oscilgroup->labelcolor((Fl_Color)179);
  655. oscilgroup->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT));
  656. oscilgroup->when(FL_WHEN_RELEASE);
  657. oscilgroup->base = location; oscilgroup->ext="oscilgen/"; oscilgroup->osc = osc_i;
  658. osc=new Fl_Oscilloscope(o->x(),o->y(),o->w(),o->h(),"");osc->init(false);
  659. oscilgroup->end();
  660. } // Fl_Osc_Group* oscilgroup
  661. { Fl_Button* o = new Fl_Button(375, 270, 60, 20, "Change");
  662. o->box(FL_THIN_UP_BOX);
  663. o->labelfont(1);
  664. o->labelsize(11);
  665. o->callback((Fl_Callback*)cb_Change);
  666. } // Fl_Button* o
  667. { cbwidget = new Fl_Box(125, 135, 205, 20, "Harmonic Content");
  668. cbwidget->callback((Fl_Callback*)cb_cbwidget);
  669. cbwidget->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
  670. } // Fl_Box* cbwidget
  671. { Fl_Button* o = new Fl_Button(375, 225, 80, 20, "Resonance");
  672. o->box(FL_THIN_UP_BOX);
  673. o->callback((Fl_Callback*)cb_Resonance);
  674. } // Fl_Button* o
  675. { Fl_Osc_Dial* o = bwdial = new Fl_Osc_Dial(15, 295, 35, 35, "BandWidth");
  676. bwdial->box(FL_ROUND_UP_BOX);
  677. bwdial->color(FL_BACKGROUND_COLOR);
  678. bwdial->selection_color(FL_INACTIVE_COLOR);
  679. bwdial->labeltype(FL_NORMAL_LABEL);
  680. bwdial->labelfont(0);
  681. bwdial->labelsize(10);
  682. bwdial->labelcolor(FL_FOREGROUND_COLOR);
  683. bwdial->maximum(1000);
  684. bwdial->step(1);
  685. bwdial->callback((Fl_Callback*)cb_bwdial);
  686. bwdial->align(Fl_Align(FL_ALIGN_BOTTOM));
  687. bwdial->when(FL_WHEN_CHANGED);
  688. o->init("Pbandwidth");o->reset_value=500;
  689. } // Fl_Osc_Dial* bwdial
  690. { Fl_Osc_Output* o = bwcents = new Fl_Osc_Output(55, 305, 55, 15, "cents");
  691. bwcents->box(FL_NO_BOX);
  692. bwcents->color(FL_BACKGROUND_COLOR);
  693. bwcents->selection_color(FL_BACKGROUND_COLOR);
  694. bwcents->labeltype(FL_NORMAL_LABEL);
  695. bwcents->labelfont(0);
  696. bwcents->labelsize(10);
  697. bwcents->labelcolor(FL_FOREGROUND_COLOR);
  698. bwcents->maximum(10000);
  699. bwcents->step(0.1);
  700. bwcents->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT));
  701. bwcents->when(FL_WHEN_CHANGED);
  702. o->init("bandwidthvalue");
  703. } // Fl_Osc_Output* bwcents
  704. { Fl_Group* o = new Fl_Group(315, 295, 215, 45);
  705. o->box(FL_UP_FRAME);
  706. { Fl_Osc_Choice* o = hrpostype = new Fl_Osc_Choice(325, 310, 80, 20, "OvertonesPosition");
  707. hrpostype->box(FL_UP_BOX);
  708. hrpostype->down_box(FL_BORDER_BOX);
  709. hrpostype->color(FL_BACKGROUND_COLOR);
  710. hrpostype->selection_color(FL_SELECTION_COLOR);
  711. hrpostype->labeltype(FL_NORMAL_LABEL);
  712. hrpostype->labelfont(0);
  713. hrpostype->labelsize(10);
  714. hrpostype->labelcolor(FL_FOREGROUND_COLOR);
  715. hrpostype->textsize(11);
  716. hrpostype->callback((Fl_Callback*)cb_hrpostype);
  717. hrpostype->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  718. hrpostype->when(FL_WHEN_RELEASE);
  719. hrpostype->menu(menu_hrpostype);
  720. o->init("Phrpos.type");
  721. } // Fl_Osc_Choice* hrpostype
  722. { Fl_Osc_Dial* o = hrpospar1 = new Fl_Osc_Dial(425, 310, 25, 25, "Par1");
  723. hrpospar1->box(FL_ROUND_UP_BOX);
  724. hrpospar1->color(FL_BACKGROUND_COLOR);
  725. hrpospar1->selection_color(FL_INACTIVE_COLOR);
  726. hrpospar1->labeltype(FL_NORMAL_LABEL);
  727. hrpospar1->labelfont(0);
  728. hrpospar1->labelsize(10);
  729. hrpospar1->labelcolor(FL_FOREGROUND_COLOR);
  730. hrpospar1->maximum(255);
  731. hrpospar1->step(1);
  732. hrpospar1->callback((Fl_Callback*)cb_hrpospar1);
  733. hrpospar1->align(Fl_Align(FL_ALIGN_TOP));
  734. hrpospar1->when(FL_WHEN_CHANGED);
  735. o->init("Phrpos.par1");o->reset_value=64;
  736. } // Fl_Osc_Dial* hrpospar1
  737. { Fl_Osc_Dial* o = hrpospar2 = new Fl_Osc_Dial(460, 310, 25, 25, "Par2");
  738. hrpospar2->box(FL_ROUND_UP_BOX);
  739. hrpospar2->color(FL_BACKGROUND_COLOR);
  740. hrpospar2->selection_color(FL_INACTIVE_COLOR);
  741. hrpospar2->labeltype(FL_NORMAL_LABEL);
  742. hrpospar2->labelfont(0);
  743. hrpospar2->labelsize(10);
  744. hrpospar2->labelcolor(FL_FOREGROUND_COLOR);
  745. hrpospar2->maximum(255);
  746. hrpospar2->step(1);
  747. hrpospar2->callback((Fl_Callback*)cb_hrpospar2);
  748. hrpospar2->align(Fl_Align(FL_ALIGN_TOP));
  749. hrpospar2->when(FL_WHEN_CHANGED);
  750. o->init("Phrpos.par2");o->reset_value=64;
  751. } // Fl_Osc_Dial* hrpospar2
  752. { Fl_Osc_Dial* o = hrpospar3 = new Fl_Osc_Dial(495, 310, 25, 25, "ForceH");
  753. hrpospar3->box(FL_ROUND_UP_BOX);
  754. hrpospar3->color(FL_BACKGROUND_COLOR);
  755. hrpospar3->selection_color(FL_INACTIVE_COLOR);
  756. hrpospar3->labeltype(FL_NORMAL_LABEL);
  757. hrpospar3->labelfont(0);
  758. hrpospar3->labelsize(10);
  759. hrpospar3->labelcolor(FL_FOREGROUND_COLOR);
  760. hrpospar3->maximum(255);
  761. hrpospar3->step(1);
  762. hrpospar3->callback((Fl_Callback*)cb_hrpospar3);
  763. hrpospar3->align(Fl_Align(FL_ALIGN_TOP));
  764. hrpospar3->when(FL_WHEN_CHANGED);
  765. o->init("Phrpos.par3");
  766. } // Fl_Osc_Dial* hrpospar3
  767. o->end();
  768. } // Fl_Group* o
  769. { Fl_Osc_Choice* o = bwscale = new Fl_Osc_Choice(120, 305, 80, 20, "Bandwidth Scale");
  770. bwscale->box(FL_UP_BOX);
  771. bwscale->down_box(FL_BORDER_BOX);
  772. bwscale->color(FL_BACKGROUND_COLOR);
  773. bwscale->selection_color(FL_SELECTION_COLOR);
  774. bwscale->labeltype(FL_NORMAL_LABEL);
  775. bwscale->labelfont(0);
  776. bwscale->labelsize(10);
  777. bwscale->labelcolor(FL_FOREGROUND_COLOR);
  778. bwscale->textsize(11);
  779. bwscale->callback((Fl_Callback*)cb_bwscale);
  780. bwscale->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  781. bwscale->when(FL_WHEN_RELEASE);
  782. bwscale->menu(menu_bwscale);
  783. o->init("Pbwscale");
  784. } // Fl_Osc_Choice* bwscale
  785. { Fl_Group* o = overtonepos = new Fl_Group(5, 345, 525, 45);
  786. overtonepos->box(FL_FLAT_BOX);
  787. overtonepos->color((Fl_Color)51);
  788. overtonepos->selection_color((Fl_Color)218);
  789. overtonepos->labelcolor(FL_GREEN);
  790. opui=new PADnoteOvertonePosition(o->x(),o->y(),o->w(),o->h(),"");
  791. opui->init();
  792. overtonepos->end();
  793. } // Fl_Group* overtonepos
  794. { Fl_Osc_Choice* o = qsamplesize = new Fl_Osc_Choice(375, 190, 115, 20, "Sample Size");
  795. qsamplesize->box(FL_UP_BOX);
  796. qsamplesize->down_box(FL_BORDER_BOX);
  797. qsamplesize->color(FL_BACKGROUND_COLOR);
  798. qsamplesize->selection_color(FL_SELECTION_COLOR);
  799. qsamplesize->labeltype(FL_NORMAL_LABEL);
  800. qsamplesize->labelfont(0);
  801. qsamplesize->labelsize(10);
  802. qsamplesize->labelcolor(FL_FOREGROUND_COLOR);
  803. qsamplesize->textsize(11);
  804. qsamplesize->callback((Fl_Callback*)cb_qsamplesize);
  805. qsamplesize->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  806. qsamplesize->when(FL_WHEN_RELEASE);
  807. qsamplesize->menu(menu_qsamplesize);
  808. o->init("Pquality.samplesize");
  809. } // Fl_Osc_Choice* qsamplesize
  810. { Fl_Osc_Choice* o = qsmpoct = new Fl_Osc_Choice(430, 155, 45, 20, "smp/oct");
  811. qsmpoct->box(FL_UP_BOX);
  812. qsmpoct->down_box(FL_BORDER_BOX);
  813. qsmpoct->color(FL_BACKGROUND_COLOR);
  814. qsmpoct->selection_color(FL_SELECTION_COLOR);
  815. qsmpoct->labeltype(FL_NORMAL_LABEL);
  816. qsmpoct->labelfont(0);
  817. qsmpoct->labelsize(11);
  818. qsmpoct->labelcolor(FL_FOREGROUND_COLOR);
  819. qsmpoct->textsize(11);
  820. qsmpoct->callback((Fl_Callback*)cb_qsmpoct);
  821. qsmpoct->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  822. qsmpoct->when(FL_WHEN_RELEASE);
  823. qsmpoct->menu(menu_qsmpoct);
  824. o->init("Pquality.smpoct");
  825. } // Fl_Osc_Choice* qsmpoct
  826. { Fl_Osc_Choice* o = qoct = new Fl_Osc_Choice(480, 155, 45, 20, "no.oct");
  827. qoct->box(FL_UP_BOX);
  828. qoct->down_box(FL_BORDER_BOX);
  829. qoct->color(FL_BACKGROUND_COLOR);
  830. qoct->selection_color(FL_SELECTION_COLOR);
  831. qoct->labeltype(FL_NORMAL_LABEL);
  832. qoct->labelfont(0);
  833. qoct->labelsize(11);
  834. qoct->labelcolor(FL_FOREGROUND_COLOR);
  835. qoct->textsize(11);
  836. qoct->callback((Fl_Callback*)cb_qoct);
  837. qoct->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  838. qoct->when(FL_WHEN_RELEASE);
  839. qoct->menu(menu_qoct);
  840. o->init("Pquality.oct");
  841. } // Fl_Osc_Choice* qoct
  842. { Fl_Osc_Choice* o = qbasenote = new Fl_Osc_Choice(375, 155, 50, 20, "base");
  843. qbasenote->box(FL_UP_BOX);
  844. qbasenote->down_box(FL_BORDER_BOX);
  845. qbasenote->color(FL_BACKGROUND_COLOR);
  846. qbasenote->selection_color(FL_SELECTION_COLOR);
  847. qbasenote->labeltype(FL_NORMAL_LABEL);
  848. qbasenote->labelfont(0);
  849. qbasenote->labelsize(11);
  850. qbasenote->labelcolor(FL_FOREGROUND_COLOR);
  851. qbasenote->textsize(11);
  852. qbasenote->callback((Fl_Callback*)cb_qbasenote);
  853. qbasenote->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  854. qbasenote->when(FL_WHEN_RELEASE);
  855. qbasenote->menu(menu_qbasenote);
  856. o->init("Pquality.basenote");
  857. } // Fl_Osc_Choice* qbasenote
  858. { Fl_Group* o = hprofile = new Fl_Group(100, 45, 430, 90);
  859. hprofile->box(FL_FLAT_BOX);
  860. hprofile->color((Fl_Color)51);
  861. hprofile->selection_color((Fl_Color)218);
  862. hprofile->labelcolor(FL_GREEN);
  863. hpui=new PADnoteHarmonicProfile(o->x(),o->y(),o->w(),o->h(),"");
  864. hpui->init();
  865. hprofile->end();
  866. } // Fl_Group* hprofile
  867. { new Fl_Box(160, 25, 315, 20, "Profile of One Harmonic (Frequency Distribution)");
  868. } // Fl_Box* o
  869. { Fl_Osc_Choice* o = spectrummode = new Fl_Osc_Choice(220, 305, 90, 20, "Spectrum Mode");
  870. spectrummode->box(FL_UP_BOX);
  871. spectrummode->down_box(FL_BORDER_BOX);
  872. spectrummode->color(FL_BACKGROUND_COLOR);
  873. spectrummode->selection_color(FL_SELECTION_COLOR);
  874. spectrummode->labeltype(FL_NORMAL_LABEL);
  875. spectrummode->labelfont(1);
  876. spectrummode->labelsize(10);
  877. spectrummode->labelcolor(FL_FOREGROUND_COLOR);
  878. spectrummode->textsize(11);
  879. spectrummode->callback((Fl_Callback*)cb_spectrummode);
  880. spectrummode->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  881. spectrummode->when(FL_WHEN_RELEASE);
  882. spectrummode->menu(menu_spectrummode);
  883. o->init("Pmode");
  884. } // Fl_Osc_Choice* spectrummode
  885. harmonicstructuregroup->end();
  886. } // Fl_Osc_Group* harmonicstructuregroup
  887. { Fl_Group* o = new Fl_Group(0, 20, 535, 375, "Envelopes&LFOs");
  888. o->box(FL_UP_FRAME);
  889. o->hide();
  890. { Fl_Group* o = new Fl_Group(5, 275, 525, 115, "FREQUENCY");
  891. o->box(FL_UP_FRAME);
  892. o->labeltype(FL_EMBOSSED_LABEL);
  893. o->labelfont(1);
  894. o->labelsize(13);
  895. o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
  896. { EnvelopeUI* o = freqenv = new EnvelopeUI(10, 315, 205, 70, "PADSynth - Frequency Envelope");
  897. freqenv->box(FL_FLAT_BOX);
  898. freqenv->color((Fl_Color)51);
  899. freqenv->selection_color(FL_BACKGROUND_COLOR);
  900. freqenv->labeltype(FL_NORMAL_LABEL);
  901. freqenv->labelfont(0);
  902. freqenv->labelsize(14);
  903. freqenv->labelcolor(FL_FOREGROUND_COLOR);
  904. freqenv->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE));
  905. freqenv->when(FL_WHEN_RELEASE);
  906. o->init(ENV_ASR, osc_i, location, "FreqEnvelope/");
  907. freqenv->end();
  908. } // EnvelopeUI* freqenv
  909. { Fl_Osc_Counter* o = octave = new Fl_Osc_Counter(470, 295, 45, 15, "Octave");
  910. octave->tooltip("Octave");
  911. octave->type(1);
  912. octave->box(FL_UP_BOX);
  913. octave->color(FL_BACKGROUND_COLOR);
  914. octave->selection_color(FL_INACTIVE_COLOR);
  915. octave->labeltype(FL_NORMAL_LABEL);
  916. octave->labelfont(0);
  917. octave->labelsize(10);
  918. octave->labelcolor(FL_FOREGROUND_COLOR);
  919. octave->minimum(-8);
  920. octave->maximum(7);
  921. octave->step(1);
  922. octave->textfont(1);
  923. octave->textsize(11);
  924. octave->align(Fl_Align(FL_ALIGN_TOP));
  925. octave->when(FL_WHEN_CHANGED);
  926. o->init("octave");
  927. } // Fl_Osc_Counter* octave
  928. { Fl_Osc_Counter* o = coarsedet = new Fl_Osc_Counter(455, 365, 70, 20, "Coarse det.");
  929. coarsedet->tooltip("Coarse Detune");
  930. coarsedet->type(1);
  931. coarsedet->box(FL_UP_BOX);
  932. coarsedet->color(FL_BACKGROUND_COLOR);
  933. coarsedet->selection_color(FL_INACTIVE_COLOR);
  934. coarsedet->labeltype(FL_NORMAL_LABEL);
  935. coarsedet->labelfont(0);
  936. coarsedet->labelsize(10);
  937. coarsedet->labelcolor(FL_FOREGROUND_COLOR);
  938. coarsedet->minimum(-64);
  939. coarsedet->maximum(63);
  940. coarsedet->step(1);
  941. coarsedet->textfont(1);
  942. coarsedet->textsize(11);
  943. coarsedet->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  944. coarsedet->when(FL_WHEN_CHANGED);
  945. o->init("coarsedetune");
  946. o->lstep(10);
  947. } // Fl_Osc_Counter* coarsedet
  948. { LFOUI* o = freqlfo = new LFOUI(215, 315, 230, 70, "Frequency LFO ");
  949. freqlfo->box(FL_FLAT_BOX);
  950. freqlfo->color(FL_DARK1);
  951. freqlfo->selection_color(FL_BACKGROUND_COLOR);
  952. freqlfo->labeltype(FL_NORMAL_LABEL);
  953. freqlfo->labelfont(0);
  954. freqlfo->labelsize(14);
  955. freqlfo->labelcolor(FL_FOREGROUND_COLOR);
  956. freqlfo->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE));
  957. freqlfo->when(FL_WHEN_RELEASE);
  958. o->init(osc_i, location, "FreqLfo/");
  959. freqlfo->end();
  960. } // LFOUI* freqlfo
  961. { Fl_Osc_Slider* o = detune = new Fl_Osc_Slider(60, 296, 295, 15);
  962. detune->tooltip("Fine Detune (cents)");
  963. detune->type(5);
  964. detune->box(FL_NO_BOX);
  965. detune->color(FL_BACKGROUND_COLOR);
  966. detune->selection_color(FL_BACKGROUND_COLOR);
  967. detune->labeltype(FL_NORMAL_LABEL);
  968. detune->labelfont(0);
  969. detune->labelsize(14);
  970. detune->labelcolor(FL_FOREGROUND_COLOR);
  971. detune->minimum(-8192);
  972. detune->maximum(8191);
  973. detune->step(1);
  974. detune->callback((Fl_Callback*)cb_detune);
  975. detune->align(Fl_Align(FL_ALIGN_BOTTOM));
  976. detune->when(FL_WHEN_CHANGED);
  977. o->init("PDetune", 'i');
  978. } // Fl_Osc_Slider* detune
  979. { Fl_Osc_Output* o = detunevalueoutput = new Fl_Osc_Output(12, 296, 45, 15, "Detune");
  980. detunevalueoutput->box(FL_NO_BOX);
  981. detunevalueoutput->color(FL_BACKGROUND_COLOR);
  982. detunevalueoutput->selection_color(FL_BACKGROUND_COLOR);
  983. detunevalueoutput->labeltype(FL_NORMAL_LABEL);
  984. detunevalueoutput->labelfont(0);
  985. detunevalueoutput->labelsize(10);
  986. detunevalueoutput->labelcolor(FL_FOREGROUND_COLOR);
  987. detunevalueoutput->minimum(-5000);
  988. detunevalueoutput->maximum(5000);
  989. detunevalueoutput->step(0.01);
  990. detunevalueoutput->textfont(1);
  991. detunevalueoutput->textsize(10);
  992. detunevalueoutput->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  993. detunevalueoutput->when(FL_WHEN_CHANGED);
  994. o->init("detunevalue");
  995. } // Fl_Osc_Output* detunevalueoutput
  996. { Fl_Osc_Choice* o = detunetype = new Fl_Osc_Choice(450, 330, 75, 20, "Detune Type");
  997. detunetype->box(FL_UP_BOX);
  998. detunetype->down_box(FL_BORDER_BOX);
  999. detunetype->color(FL_BACKGROUND_COLOR);
  1000. detunetype->selection_color(FL_SELECTION_COLOR);
  1001. detunetype->labeltype(FL_NORMAL_LABEL);
  1002. detunetype->labelfont(0);
  1003. detunetype->labelsize(10);
  1004. detunetype->labelcolor(FL_FOREGROUND_COLOR);
  1005. detunetype->textfont(1);
  1006. detunetype->textsize(10);
  1007. detunetype->callback((Fl_Callback*)cb_detunetype);
  1008. detunetype->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  1009. detunetype->when(FL_WHEN_RELEASE);
  1010. o->add("L35cents");o->add("L10cents");o->add("E100cents");o->add("E1200cents");
  1011. o->init("PDetuneType",1);
  1012. } // Fl_Osc_Choice* detunetype
  1013. { Fl_Osc_Dial* o = bendadjustdial = new Fl_Osc_Dial(60, 278, 15, 15, "Bend");
  1014. bendadjustdial->tooltip("How the frequency varies according to the pitch wheel");
  1015. bendadjustdial->box(FL_ROUND_UP_BOX);
  1016. bendadjustdial->color(FL_BACKGROUND_COLOR);
  1017. bendadjustdial->selection_color(FL_INACTIVE_COLOR);
  1018. bendadjustdial->labeltype(FL_NORMAL_LABEL);
  1019. bendadjustdial->labelfont(0);
  1020. bendadjustdial->labelsize(10);
  1021. bendadjustdial->labelcolor(FL_FOREGROUND_COLOR);
  1022. bendadjustdial->minimum(-64);
  1023. bendadjustdial->maximum(63);
  1024. bendadjustdial->step(1);
  1025. bendadjustdial->align(Fl_Align(FL_ALIGN_RIGHT));
  1026. bendadjustdial->when(FL_WHEN_CHANGED);
  1027. o->init("PBendAdjust");o->reset_value=24;o->set_transform([](float x){return x/24.0f;});o->set_rounding(2);
  1028. } // Fl_Osc_Dial* bendadjustdial
  1029. { Fl_Osc_Dial* o = offsethzdial = new Fl_Osc_Dial(110, 278, 15, 15, "Offset");
  1030. offsethzdial->tooltip("Offset of frequency in Hz");
  1031. offsethzdial->box(FL_ROUND_UP_BOX);
  1032. offsethzdial->color(FL_BACKGROUND_COLOR);
  1033. offsethzdial->selection_color(FL_INACTIVE_COLOR);
  1034. offsethzdial->labeltype(FL_NORMAL_LABEL);
  1035. offsethzdial->labelfont(0);
  1036. offsethzdial->labelsize(10);
  1037. offsethzdial->labelcolor(FL_FOREGROUND_COLOR);
  1038. offsethzdial->minimum(-64);
  1039. offsethzdial->maximum(63);
  1040. offsethzdial->step(1);
  1041. offsethzdial->align(Fl_Align(FL_ALIGN_RIGHT));
  1042. offsethzdial->when(FL_WHEN_CHANGED);
  1043. o->init("POffsetHz"); o->set_rounding(2); o->set_transform([](float x){x/=64; return 15*(x*sqrtf(fabsf(x)));});
  1044. } // Fl_Osc_Dial* offsethzdial
  1045. { Fl_Osc_Check* o = hz440 = new Fl_Osc_Check(365, 295, 50, 15, "440Hz");
  1046. hz440->tooltip("set the base frequency to 440Hz");
  1047. hz440->box(FL_NO_BOX);
  1048. hz440->down_box(FL_DOWN_BOX);
  1049. hz440->color(FL_BACKGROUND_COLOR);
  1050. hz440->selection_color(FL_FOREGROUND_COLOR);
  1051. hz440->labeltype(FL_NORMAL_LABEL);
  1052. hz440->labelfont(1);
  1053. hz440->labelsize(10);
  1054. hz440->labelcolor(FL_FOREGROUND_COLOR);
  1055. hz440->callback((Fl_Callback*)cb_hz440);
  1056. hz440->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1057. hz440->when(FL_WHEN_RELEASE);
  1058. o->init("Pfixedfreq");
  1059. } // Fl_Osc_Check* hz440
  1060. { Fl_Osc_Dial* o = fixedfreqetdial = new Fl_Osc_Dial(420, 295, 15, 15, "Eq.T.");
  1061. fixedfreqetdial->tooltip("How the frequency varies according to the keyboard (leftmost for fixed freque\
  1062. ncy)");
  1063. fixedfreqetdial->box(FL_ROUND_UP_BOX);
  1064. fixedfreqetdial->color(FL_BACKGROUND_COLOR);
  1065. fixedfreqetdial->selection_color(FL_INACTIVE_COLOR);
  1066. fixedfreqetdial->labeltype(FL_NORMAL_LABEL);
  1067. fixedfreqetdial->labelfont(0);
  1068. fixedfreqetdial->labelsize(10);
  1069. fixedfreqetdial->labelcolor(FL_FOREGROUND_COLOR);
  1070. fixedfreqetdial->maximum(127);
  1071. fixedfreqetdial->step(1);
  1072. fixedfreqetdial->align(Fl_Align(FL_ALIGN_RIGHT));
  1073. fixedfreqetdial->when(FL_WHEN_CHANGED);
  1074. o->init("PfixedfreqET");
  1075. } // Fl_Osc_Dial* fixedfreqetdial
  1076. o->end();
  1077. } // Fl_Group* o
  1078. { Fl_Group* o = new Fl_Group(5, 25, 240, 250, "AMPLITUDE");
  1079. o->box(FL_UP_FRAME);
  1080. o->labeltype(FL_EMBOSSED_LABEL);
  1081. o->labelfont(1);
  1082. o->labelsize(13);
  1083. o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
  1084. { Fl_Osc_VSlider* o = volume = new Fl_Osc_VSlider(10, 50, 160, 15, "Vol");
  1085. volume->tooltip("Volume");
  1086. volume->type(5);
  1087. volume->box(FL_NO_BOX);
  1088. volume->color(FL_BACKGROUND_COLOR);
  1089. volume->selection_color(FL_BACKGROUND_COLOR);
  1090. volume->labeltype(FL_NORMAL_LABEL);
  1091. volume->labelfont(0);
  1092. volume->labelsize(11);
  1093. volume->labelcolor(FL_FOREGROUND_COLOR);
  1094. volume->maximum(127);
  1095. volume->step(1);
  1096. volume->align(Fl_Align(FL_ALIGN_RIGHT));
  1097. volume->when(FL_WHEN_CHANGED);
  1098. o->init("PVolume", 'i');o->reset_value=90;
  1099. } // Fl_Osc_VSlider* volume
  1100. { Fl_Osc_VSlider* o = vsns = new Fl_Osc_VSlider(10, 70, 160, 15, "V.Sns");
  1101. vsns->tooltip("Velocity Sensing Function (rightmost to disable)");
  1102. vsns->type(5);
  1103. vsns->box(FL_NO_BOX);
  1104. vsns->color(FL_BACKGROUND_COLOR);
  1105. vsns->selection_color(FL_BACKGROUND_COLOR);
  1106. vsns->labeltype(FL_NORMAL_LABEL);
  1107. vsns->labelfont(0);
  1108. vsns->labelsize(11);
  1109. vsns->labelcolor(FL_FOREGROUND_COLOR);
  1110. vsns->maximum(127);
  1111. vsns->step(1);
  1112. vsns->align(Fl_Align(FL_ALIGN_RIGHT));
  1113. vsns->when(FL_WHEN_CHANGED);
  1114. o->init("PAmpVelocityScaleFunction");o->reset_value=64;
  1115. } // Fl_Osc_VSlider* vsns
  1116. { Fl_Osc_Dial* o = pan = new Fl_Osc_Dial(210, 45, 30, 30, "Pan");
  1117. pan->tooltip("Panning (leftmost is Random)");
  1118. pan->box(FL_ROUND_UP_BOX);
  1119. pan->color(FL_BACKGROUND_COLOR);
  1120. pan->selection_color(FL_INACTIVE_COLOR);
  1121. pan->labeltype(FL_NORMAL_LABEL);
  1122. pan->labelfont(0);
  1123. pan->labelsize(10);
  1124. pan->labelcolor(FL_FOREGROUND_COLOR);
  1125. pan->maximum(127);
  1126. pan->step(1);
  1127. pan->align(Fl_Align(FL_ALIGN_BOTTOM));
  1128. pan->when(FL_WHEN_CHANGED);
  1129. o->init("PPanning");o->reset_value=64;
  1130. } // Fl_Osc_Dial* pan
  1131. { Fl_Osc_Dial* o = new Fl_Osc_Dial(208, 238, 20, 20, "De-pop");
  1132. o->tooltip("Pop suppression");
  1133. o->box(FL_NO_BOX);
  1134. o->color(FL_BACKGROUND_COLOR);
  1135. o->selection_color(FL_INACTIVE_COLOR);
  1136. o->labeltype(FL_NORMAL_LABEL);
  1137. o->labelfont(0);
  1138. o->labelsize(10);
  1139. o->labelcolor(FL_FOREGROUND_COLOR);
  1140. o->maximum(127);
  1141. o->step(1);
  1142. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1143. o->when(FL_WHEN_CHANGED);
  1144. o->init("Fadein_adjustment");o->reset_value=20;
  1145. } // Fl_Osc_Dial* o
  1146. { Fl_Osc_Dial* o = pstr = new Fl_Osc_Dial(78, 247, 25, 25, "P.Str.");
  1147. pstr->tooltip("Punch Strength");
  1148. pstr->box(FL_ROUND_UP_BOX);
  1149. pstr->color(FL_BACKGROUND_COLOR);
  1150. pstr->selection_color(FL_INACTIVE_COLOR);
  1151. pstr->labeltype(FL_NORMAL_LABEL);
  1152. pstr->labelfont(0);
  1153. pstr->labelsize(10);
  1154. pstr->labelcolor(FL_FOREGROUND_COLOR);
  1155. pstr->maximum(127);
  1156. pstr->step(1);
  1157. pstr->align(Fl_Align(FL_ALIGN_TOP));
  1158. pstr->when(FL_WHEN_CHANGED);
  1159. o->init("PPunchStrength");
  1160. } // Fl_Osc_Dial* pstr
  1161. { Fl_Osc_Dial* o = pt = new Fl_Osc_Dial(108, 247, 25, 25, "P.t.");
  1162. pt->tooltip("Punch Time (duration)");
  1163. pt->box(FL_ROUND_UP_BOX);
  1164. pt->color(FL_BACKGROUND_COLOR);
  1165. pt->selection_color(FL_INACTIVE_COLOR);
  1166. pt->labeltype(FL_NORMAL_LABEL);
  1167. pt->labelfont(0);
  1168. pt->labelsize(10);
  1169. pt->labelcolor(FL_FOREGROUND_COLOR);
  1170. pt->maximum(127);
  1171. pt->step(1);
  1172. pt->align(Fl_Align(FL_ALIGN_TOP));
  1173. pt->when(FL_WHEN_CHANGED);
  1174. o->init("PPunchTime");o->reset_value=60;
  1175. } // Fl_Osc_Dial* pt
  1176. { Fl_Osc_Dial* o = pstc = new Fl_Osc_Dial(138, 247, 25, 25, "P.Stc.");
  1177. pstc->tooltip("Punch Stretch");
  1178. pstc->box(FL_ROUND_UP_BOX);
  1179. pstc->color(FL_BACKGROUND_COLOR);
  1180. pstc->selection_color(FL_INACTIVE_COLOR);
  1181. pstc->labeltype(FL_NORMAL_LABEL);
  1182. pstc->labelfont(0);
  1183. pstc->labelsize(10);
  1184. pstc->labelcolor(FL_FOREGROUND_COLOR);
  1185. pstc->maximum(127);
  1186. pstc->step(1);
  1187. pstc->align(Fl_Align(FL_ALIGN_TOP));
  1188. pstc->when(FL_WHEN_CHANGED);
  1189. o->init("PPunchStretch");o->reset_value=64;
  1190. } // Fl_Osc_Dial* pstc
  1191. { Fl_Osc_Dial* o = pvel = new Fl_Osc_Dial(168, 247, 25, 25, "P.Vel.");
  1192. pvel->tooltip("Punch Velocity Sensing");
  1193. pvel->box(FL_ROUND_UP_BOX);
  1194. pvel->color(FL_BACKGROUND_COLOR);
  1195. pvel->selection_color(FL_INACTIVE_COLOR);
  1196. pvel->labeltype(FL_NORMAL_LABEL);
  1197. pvel->labelfont(0);
  1198. pvel->labelsize(10);
  1199. pvel->labelcolor(FL_FOREGROUND_COLOR);
  1200. pvel->maximum(127);
  1201. pvel->step(1);
  1202. pvel->align(Fl_Align(FL_ALIGN_TOP));
  1203. pvel->when(FL_WHEN_CHANGED);
  1204. o->init("PPunchVelocitySensing");o->reset_value=72;
  1205. } // Fl_Osc_Dial* pvel
  1206. { EnvelopeUI* o = ampenv = new EnvelopeUI(10, 95, 205, 70, "PADSynth - Amplitude Envelope");
  1207. ampenv->box(FL_FLAT_BOX);
  1208. ampenv->color((Fl_Color)51);
  1209. ampenv->selection_color(FL_BACKGROUND_COLOR);
  1210. ampenv->labeltype(FL_NORMAL_LABEL);
  1211. ampenv->labelfont(0);
  1212. ampenv->labelsize(14);
  1213. ampenv->labelcolor(FL_FOREGROUND_COLOR);
  1214. ampenv->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE));
  1215. ampenv->when(FL_WHEN_RELEASE);
  1216. o->init(ENV_ADSR, osc_i, location, "AmpEnvelope/");
  1217. ampenv->end();
  1218. } // EnvelopeUI* ampenv
  1219. { LFOUI* o = amplfo = new LFOUI(10, 165, 230, 70, "Amplitude LFO ");
  1220. amplfo->box(FL_FLAT_BOX);
  1221. amplfo->color(FL_DARK1);
  1222. amplfo->selection_color(FL_BACKGROUND_COLOR);
  1223. amplfo->labeltype(FL_NORMAL_LABEL);
  1224. amplfo->labelfont(0);
  1225. amplfo->labelsize(14);
  1226. amplfo->labelcolor(FL_FOREGROUND_COLOR);
  1227. amplfo->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE));
  1228. amplfo->when(FL_WHEN_RELEASE);
  1229. o->init(osc_i, location, "AmpLfo/");
  1230. amplfo->end();
  1231. } // LFOUI* amplfo
  1232. { Fl_Osc_Check* o = stereo = new Fl_Osc_Check(10, 245, 70, 25, "Stereo");
  1233. stereo->box(FL_NO_BOX);
  1234. stereo->down_box(FL_DOWN_BOX);
  1235. stereo->color(FL_BACKGROUND_COLOR);
  1236. stereo->selection_color(FL_FOREGROUND_COLOR);
  1237. stereo->labeltype(FL_NORMAL_LABEL);
  1238. stereo->labelfont(0);
  1239. stereo->labelsize(12);
  1240. stereo->labelcolor(FL_FOREGROUND_COLOR);
  1241. stereo->callback((Fl_Callback*)cb_stereo);
  1242. stereo->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1243. stereo->when(FL_WHEN_RELEASE);
  1244. o->init("PStereo");
  1245. } // Fl_Osc_Check* stereo
  1246. o->end();
  1247. } // Fl_Group* o
  1248. { Fl_Group* o = new Fl_Group(245, 25, 285, 250, "FILTER");
  1249. o->box(FL_UP_FRAME);
  1250. o->labeltype(FL_EMBOSSED_LABEL);
  1251. o->labelfont(1);
  1252. o->labelsize(13);
  1253. o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
  1254. { EnvelopeUI* o = filterenv = new EnvelopeUI(250, 130, 275, 70, "PADSynth - Filter Envelope");
  1255. filterenv->box(FL_FLAT_BOX);
  1256. filterenv->color((Fl_Color)51);
  1257. filterenv->selection_color(FL_BACKGROUND_COLOR);
  1258. filterenv->labeltype(FL_NORMAL_LABEL);
  1259. filterenv->labelfont(0);
  1260. filterenv->labelsize(14);
  1261. filterenv->labelcolor(FL_FOREGROUND_COLOR);
  1262. filterenv->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE));
  1263. filterenv->when(FL_WHEN_RELEASE);
  1264. o->init(ENV_ADSR_FILTER, osc_i, location, "FilterEnvelope/");
  1265. filterenv->end();
  1266. } // EnvelopeUI* filterenv
  1267. { LFOUI* o = filterlfo = new LFOUI(250, 200, 230, 70, "Filter LFO ");
  1268. filterlfo->box(FL_FLAT_BOX);
  1269. filterlfo->color(FL_DARK1);
  1270. filterlfo->selection_color(FL_BACKGROUND_COLOR);
  1271. filterlfo->labeltype(FL_NORMAL_LABEL);
  1272. filterlfo->labelfont(0);
  1273. filterlfo->labelsize(14);
  1274. filterlfo->labelcolor(FL_FOREGROUND_COLOR);
  1275. filterlfo->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE));
  1276. filterlfo->when(FL_WHEN_RELEASE);
  1277. o->init(osc_i, location, "FilterLfo/");
  1278. filterlfo->end();
  1279. } // LFOUI* filterlfo
  1280. { FilterUI* o = filterui = new FilterUI(250, 50, 275, 75, "PADsynth - Filter");
  1281. filterui->box(FL_FLAT_BOX);
  1282. filterui->color(FL_LIGHT1);
  1283. filterui->selection_color(FL_BACKGROUND_COLOR);
  1284. filterui->labeltype(FL_NORMAL_LABEL);
  1285. filterui->labelfont(0);
  1286. filterui->labelsize(14);
  1287. filterui->labelcolor(FL_FOREGROUND_COLOR);
  1288. filterui->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE));
  1289. filterui->when(FL_WHEN_RELEASE);
  1290. o->init(location + "PFilter",
  1291. osc_i, location, "GlobalFilter/");
  1292. filterui->end();
  1293. } // FilterUI* filterui
  1294. o->end();
  1295. } // Fl_Group* o
  1296. o->end();
  1297. } // Fl_Group* o
  1298. o->end();
  1299. } // Fl_Tabs* o
  1300. { Fl_Button* o = applybutton = new Fl_Button(200, 400, 135, 25, "Apply Changes");
  1301. applybutton->box(FL_THIN_UP_BOX);
  1302. applybutton->callback((Fl_Callback*)cb_applybutton);
  1303. o->color(FL_RED);
  1304. } // Fl_Button* applybutton
  1305. { Fl_Button* o = new Fl_Button(470, 400, 60, 25, "Close");
  1306. o->box(FL_THIN_UP_BOX);
  1307. o->callback((Fl_Callback*)cb_Close);
  1308. } // Fl_Button* o
  1309. { Fl_Button* o = new Fl_Button(400, 405, 25, 15, "C");
  1310. o->box(FL_THIN_UP_BOX);
  1311. o->color((Fl_Color)179);
  1312. o->labelfont(1);
  1313. o->labelsize(11);
  1314. o->labelcolor((Fl_Color)55);
  1315. o->callback((Fl_Callback*)cb_C);
  1316. } // Fl_Button* o
  1317. { Fl_Button* o = new Fl_Button(430, 405, 25, 15, "P");
  1318. o->box(FL_THIN_UP_BOX);
  1319. o->color((Fl_Color)179);
  1320. o->labelfont(1);
  1321. o->labelsize(11);
  1322. o->labelcolor((Fl_Color)55);
  1323. o->callback((Fl_Callback*)cb_P);
  1324. } // Fl_Button* o
  1325. { Fl_Osc_Button* o = new Fl_Osc_Button(5, 400, 55, 25, "export");
  1326. o->tooltip("export samples as wav file");
  1327. o->box(FL_THIN_UP_BOX);
  1328. o->color((Fl_Color)51);
  1329. o->selection_color(FL_BACKGROUND_COLOR);
  1330. o->labeltype(FL_NORMAL_LABEL);
  1331. o->labelfont(0);
  1332. o->labelsize(11);
  1333. o->labelcolor(FL_FOREGROUND_COLOR);
  1334. o->callback((Fl_Callback*)cb_export);
  1335. o->align(Fl_Align(FL_ALIGN_WRAP));
  1336. o->when(FL_WHEN_RELEASE);
  1337. } // Fl_Osc_Button* o
  1338. padnotewindow->end();
  1339. } // Fl_Osc_Window* padnotewindow
  1340. return padnotewindow;
  1341. }
  1342. void PADnoteUI::refresh() {
  1343. amplfo->refresh();
  1344. freqlfo->refresh();
  1345. filterlfo->refresh();
  1346. ampenv->refresh();
  1347. freqenv->refresh();
  1348. filterenv->refresh();
  1349. filterui->refresh();
  1350. /* harmonic structure parametrs */
  1351. resui->refresh();
  1352. if (oscui) oscui->refresh();
  1353. if (spectrummode->value()==0){
  1354. bwprofilegroup->activate();
  1355. bwdial->activate();
  1356. bwcents->activate();
  1357. hprofile->activate();
  1358. hprofile->color(51);
  1359. bwscale->activate();
  1360. } else {
  1361. bwprofilegroup->deactivate();
  1362. bwdial->deactivate();
  1363. bwcents->deactivate();
  1364. hprofile->deactivate();
  1365. hprofile->color(48);
  1366. bwscale->activate();
  1367. };
  1368. hprofile->redraw();
  1369. opui->update();
  1370. osc->redraw();
  1371. //MiddleWare::preparePadSynth(location.c_str(), pars);
  1372. applybutton->color(FL_GRAY);
  1373. applybutton->parent()->redraw();
  1374. }
  1375. PADnoteUI::~PADnoteUI() {
  1376. delete apply_watcher;
  1377. delete(oscui);
  1378. delete(resui);
  1379. padnotewindow->hide();
  1380. delete padnotewindow;
  1381. }