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.

462 lines
16KB

  1. // generated by Fast Light User Interface Designer (fluid) version 1.0300
  2. #include "external/zynaddsubfx/UI/ResonanceUI.h"
  3. //Copyright (c) 2002-2005 Nasca Octavian Paul
  4. //License: GNU GPL version 2 or later
  5. #include <math.h>
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9. void ResonanceUI::cb_Close_i(Fl_Button*, void*) {
  10. resonancewindow->hide();
  11. }
  12. void ResonanceUI::cb_Close(Fl_Button* o, void* v) {
  13. ((ResonanceUI*)(o->parent()->user_data()))->cb_Close_i(o,v);
  14. }
  15. void ResonanceUI::cb_Zero_i(Fl_Osc_Button* o, void*) {
  16. o->oscWrite("zero");
  17. redrawPADnoteApply();
  18. }
  19. void ResonanceUI::cb_Zero(Fl_Osc_Button* o, void* v) {
  20. ((ResonanceUI*)(o->parent()->user_data()))->cb_Zero_i(o,v);
  21. }
  22. void ResonanceUI::cb_Smooth_i(Fl_Osc_Button* o, void*) {
  23. o->oscWrite("smooth");
  24. redrawPADnoteApply();
  25. }
  26. void ResonanceUI::cb_Smooth(Fl_Osc_Button* o, void* v) {
  27. ((ResonanceUI*)(o->parent()->user_data()))->cb_Smooth_i(o,v);
  28. }
  29. void ResonanceUI::cb_maxdb_i(Fl_Osc_Slider* o, void*) {
  30. maxdbvo->value(o->value());
  31. redrawPADnoteApply();
  32. }
  33. void ResonanceUI::cb_maxdb(Fl_Osc_Slider* o, void* v) {
  34. ((ResonanceUI*)(o->parent()->user_data()))->cb_maxdb_i(o,v);
  35. }
  36. void ResonanceUI::cb_centerfreqvo_i(Fl_Osc_Output* o, void*) {
  37. o->value(o->newvalue()/1000.0);
  38. }
  39. void ResonanceUI::cb_centerfreqvo(Fl_Osc_Output* o, void* v) {
  40. ((ResonanceUI*)(o->parent()->user_data()))->cb_centerfreqvo_i(o,v);
  41. }
  42. void ResonanceUI::cb_octavesfreqvo_i(Fl_Osc_Output* o, void*) {
  43. o->value(o->newvalue());
  44. }
  45. void ResonanceUI::cb_octavesfreqvo(Fl_Osc_Output* o, void* v) {
  46. ((ResonanceUI*)(o->parent()->user_data()))->cb_octavesfreqvo_i(o,v);
  47. }
  48. void ResonanceUI::cb_RND2_i(Fl_Osc_Button* o, void*) {
  49. o->oscWrite("randomize", "i", 1);
  50. redrawPADnoteApply();
  51. }
  52. void ResonanceUI::cb_RND2(Fl_Osc_Button* o, void* v) {
  53. ((ResonanceUI*)(o->parent()->user_data()))->cb_RND2_i(o,v);
  54. }
  55. void ResonanceUI::cb_RND1_i(Fl_Osc_Button* o, void*) {
  56. o->oscWrite("randomize", "i", 0);
  57. redrawPADnoteApply();
  58. }
  59. void ResonanceUI::cb_RND1(Fl_Osc_Button* o, void* v) {
  60. ((ResonanceUI*)(o->parent()->user_data()))->cb_RND1_i(o,v);
  61. }
  62. void ResonanceUI::cb_RND3_i(Fl_Osc_Button* o, void*) {
  63. o->oscWrite("randomize", "i", 2);
  64. redrawPADnoteApply();
  65. }
  66. void ResonanceUI::cb_RND3(Fl_Osc_Button* o, void* v) {
  67. ((ResonanceUI*)(o->parent()->user_data()))->cb_RND3_i(o,v);
  68. }
  69. void ResonanceUI::cb_InterpP_i(Fl_Osc_Button* o, void*) {
  70. int type;
  71. if (Fl::event_button()==FL_LEFT_MOUSE) type=0;
  72. else type=1;
  73. o->oscWrite("interpolatepeaks", "i", type);
  74. redrawPADnoteApply();
  75. }
  76. void ResonanceUI::cb_InterpP(Fl_Osc_Button* o, void* v) {
  77. ((ResonanceUI*)(o->parent()->user_data()))->cb_InterpP_i(o,v);
  78. }
  79. void ResonanceUI::cb_centerfreq_i(Fl_Osc_Slider*, void*) {
  80. centerfreqvo->do_callback();
  81. redrawPADnoteApply();
  82. }
  83. void ResonanceUI::cb_centerfreq(Fl_Osc_Slider* o, void* v) {
  84. ((ResonanceUI*)(o->parent()->user_data()))->cb_centerfreq_i(o,v);
  85. }
  86. void ResonanceUI::cb_octavesfreq_i(Fl_Osc_Slider*, void*) {
  87. octavesfreqvo->do_callback();
  88. redrawPADnoteApply();
  89. }
  90. void ResonanceUI::cb_octavesfreq(Fl_Osc_Slider* o, void* v) {
  91. ((ResonanceUI*)(o->parent()->user_data()))->cb_octavesfreq_i(o,v);
  92. }
  93. void ResonanceUI::cb_C_i(Fl_Button*, void*) {
  94. presetsui->copy(resonancewindow->loc());
  95. }
  96. void ResonanceUI::cb_C(Fl_Button* o, void* v) {
  97. ((ResonanceUI*)(o->parent()->user_data()))->cb_C_i(o,v);
  98. }
  99. void ResonanceUI::cb_P_i(Fl_Button*, void*) {
  100. presetsui->paste(resonancewindow->loc(),this);
  101. }
  102. void ResonanceUI::cb_P(Fl_Button* o, void* v) {
  103. ((ResonanceUI*)(o->parent()->user_data()))->cb_P_i(o,v);
  104. }
  105. void ResonanceUI::cb_applybutton_i(Fl_Button*, void*) {
  106. applybutton->color(FL_GRAY);
  107. applybutton->redraw();
  108. if (cbapplywidget!=NULL) {
  109. cbapplywidget->do_callback();
  110. cbapplywidget->color(FL_GRAY);
  111. cbapplywidget->redraw();
  112. };
  113. }
  114. void ResonanceUI::cb_applybutton(Fl_Button* o, void* v) {
  115. ((ResonanceUI*)(o->parent()->user_data()))->cb_applybutton_i(o,v);
  116. }
  117. Fl_Osc_Window* ResonanceUI::make_window(Fl_Osc_Interface *osc, std::string loc) {
  118. { resonancewindow = new Fl_Osc_Window(780, 305, "Resonance");
  119. resonancewindow->box(FL_FLAT_BOX);
  120. resonancewindow->color(FL_BACKGROUND_COLOR);
  121. resonancewindow->selection_color(FL_BACKGROUND_COLOR);
  122. resonancewindow->labeltype(FL_NO_LABEL);
  123. resonancewindow->labelfont(0);
  124. resonancewindow->labelsize(14);
  125. resonancewindow->labelcolor(FL_FOREGROUND_COLOR);
  126. resonancewindow->user_data((void*)(this));
  127. resonancewindow->align(Fl_Align(FL_ALIGN_TOP));
  128. resonancewindow->when(FL_WHEN_RELEASE);
  129. { khzvalue = new Fl_Value_Output(415, 264, 45, 18, "kHz");
  130. khzvalue->labelsize(12);
  131. khzvalue->minimum(0.001);
  132. khzvalue->maximum(48);
  133. khzvalue->step(0.01);
  134. khzvalue->textfont(1);
  135. khzvalue->textsize(12);
  136. khzvalue->align(Fl_Align(FL_ALIGN_RIGHT));
  137. //this widget must be before the calling widgets
  138. resonancewindow->init(osc,loc);
  139. } // Fl_Value_Output* khzvalue
  140. { dbvalue = new Fl_Value_Output(415, 282, 45, 18, "dB");
  141. dbvalue->labelsize(12);
  142. dbvalue->minimum(-150);
  143. dbvalue->maximum(150);
  144. dbvalue->step(0.1);
  145. dbvalue->textfont(1);
  146. dbvalue->textsize(12);
  147. dbvalue->align(Fl_Align(FL_ALIGN_RIGHT));
  148. //this widget must be before the calling widgets
  149. } // Fl_Value_Output* dbvalue
  150. { Fl_Button* o = new Fl_Button(690, 283, 84, 17, "Close");
  151. o->box(FL_THIN_UP_BOX);
  152. o->callback((Fl_Callback*)cb_Close);
  153. } // Fl_Button* o
  154. { Fl_Osc_Button* o = new Fl_Osc_Button(491, 264, 66, 15, "Zero");
  155. o->tooltip("Clear the resonance function");
  156. o->box(FL_THIN_UP_BOX);
  157. o->color(FL_BACKGROUND_COLOR);
  158. o->selection_color(FL_BACKGROUND_COLOR);
  159. o->labeltype(FL_NORMAL_LABEL);
  160. o->labelfont(1);
  161. o->labelsize(12);
  162. o->labelcolor(FL_FOREGROUND_COLOR);
  163. o->callback((Fl_Callback*)cb_Zero);
  164. o->align(Fl_Align(FL_ALIGN_CENTER));
  165. o->when(FL_WHEN_RELEASE);
  166. } // Fl_Osc_Button* o
  167. { Fl_Osc_Button* o = new Fl_Osc_Button(491, 282, 66, 18, "Smooth");
  168. o->tooltip("Smooth the resonance function");
  169. o->box(FL_THIN_UP_BOX);
  170. o->color(FL_BACKGROUND_COLOR);
  171. o->selection_color(FL_BACKGROUND_COLOR);
  172. o->labeltype(FL_NORMAL_LABEL);
  173. o->labelfont(1);
  174. o->labelsize(12);
  175. o->labelcolor(FL_FOREGROUND_COLOR);
  176. o->callback((Fl_Callback*)cb_Smooth);
  177. o->align(Fl_Align(FL_ALIGN_CENTER));
  178. o->when(FL_WHEN_RELEASE);
  179. } // Fl_Osc_Button* o
  180. { Fl_Osc_Check* o = enabled = new Fl_Osc_Check(6, 270, 78, 27, "Enable");
  181. enabled->box(FL_THIN_UP_BOX);
  182. enabled->down_box(FL_DOWN_BOX);
  183. enabled->color(FL_BACKGROUND_COLOR);
  184. enabled->selection_color(FL_FOREGROUND_COLOR);
  185. enabled->labeltype(FL_NORMAL_LABEL);
  186. enabled->labelfont(0);
  187. enabled->labelsize(14);
  188. enabled->labelcolor(FL_FOREGROUND_COLOR);
  189. enabled->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  190. enabled->when(FL_WHEN_RELEASE);
  191. o->init("Penabled");
  192. } // Fl_Osc_Check* enabled
  193. { Fl_Osc_Slider* o = maxdb = new Fl_Osc_Slider(90, 285, 84, 15);
  194. maxdb->type(5);
  195. maxdb->box(FL_FLAT_BOX);
  196. maxdb->color(FL_BACKGROUND_COLOR);
  197. maxdb->selection_color(FL_BACKGROUND_COLOR);
  198. maxdb->labeltype(FL_NORMAL_LABEL);
  199. maxdb->labelfont(0);
  200. maxdb->labelsize(14);
  201. maxdb->labelcolor(FL_FOREGROUND_COLOR);
  202. maxdb->minimum(1);
  203. maxdb->maximum(90);
  204. maxdb->step(1);
  205. maxdb->value(30);
  206. maxdb->callback((Fl_Callback*)cb_maxdb);
  207. maxdb->align(Fl_Align(FL_ALIGN_BOTTOM));
  208. maxdb->when(FL_WHEN_CHANGED);
  209. o->init("PmaxdB", 'i'); o->reset_value = 30;
  210. } // Fl_Osc_Slider* maxdb
  211. { maxdbvo = new Fl_Value_Output(126, 264, 24, 18, "Max.");
  212. maxdbvo->tooltip("The Maximum amplitude (dB)");
  213. maxdbvo->labelsize(12);
  214. maxdbvo->minimum(1);
  215. maxdbvo->maximum(127);
  216. maxdbvo->step(1);
  217. maxdbvo->value(30);
  218. maxdbvo->textsize(12);
  219. } // Fl_Value_Output* maxdbvo
  220. { new Fl_Box(150, 264, 24, 18, "dB");
  221. } // Fl_Box* o
  222. { Fl_Osc_Output* o = centerfreqvo = new Fl_Osc_Output(210, 264, 45, 18, "C.f.");
  223. centerfreqvo->tooltip("Center Frequency (kHz)");
  224. centerfreqvo->box(FL_NO_BOX);
  225. centerfreqvo->color(FL_BACKGROUND_COLOR);
  226. centerfreqvo->selection_color(FL_BACKGROUND_COLOR);
  227. centerfreqvo->labeltype(FL_NORMAL_LABEL);
  228. centerfreqvo->labelfont(0);
  229. centerfreqvo->labelsize(12);
  230. centerfreqvo->labelcolor(FL_FOREGROUND_COLOR);
  231. centerfreqvo->minimum(1);
  232. centerfreqvo->maximum(10);
  233. centerfreqvo->step(0.01);
  234. centerfreqvo->value(1);
  235. centerfreqvo->textfont(1);
  236. centerfreqvo->textsize(12);
  237. centerfreqvo->callback((Fl_Callback*)cb_centerfreqvo);
  238. centerfreqvo->align(Fl_Align(FL_ALIGN_LEFT));
  239. centerfreqvo->when(3);
  240. o->init("centerfreq");
  241. } // Fl_Osc_Output* centerfreqvo
  242. { Fl_Osc_Output* o = octavesfreqvo = new Fl_Osc_Output(210, 282, 45, 18, "Oct.");
  243. octavesfreqvo->tooltip("No. of octaves");
  244. octavesfreqvo->box(FL_NO_BOX);
  245. octavesfreqvo->color(FL_BACKGROUND_COLOR);
  246. octavesfreqvo->selection_color(FL_BACKGROUND_COLOR);
  247. octavesfreqvo->labeltype(FL_NORMAL_LABEL);
  248. octavesfreqvo->labelfont(0);
  249. octavesfreqvo->labelsize(12);
  250. octavesfreqvo->labelcolor(FL_FOREGROUND_COLOR);
  251. octavesfreqvo->maximum(11);
  252. octavesfreqvo->step(0.01);
  253. octavesfreqvo->value(5);
  254. octavesfreqvo->textfont(1);
  255. octavesfreqvo->textsize(12);
  256. octavesfreqvo->callback((Fl_Callback*)cb_octavesfreqvo);
  257. octavesfreqvo->align(Fl_Align(FL_ALIGN_LEFT));
  258. octavesfreqvo->when(3);
  259. o->init("octavesfreq");
  260. } // Fl_Osc_Output* octavesfreqvo
  261. { Fl_Osc_Button* o = new Fl_Osc_Button(566, 276, 42, 12, "RND2");
  262. o->tooltip("Randomize the resonance function");
  263. o->box(FL_THIN_UP_BOX);
  264. o->color(FL_BACKGROUND_COLOR);
  265. o->selection_color(FL_BACKGROUND_COLOR);
  266. o->labeltype(FL_NORMAL_LABEL);
  267. o->labelfont(1);
  268. o->labelsize(10);
  269. o->labelcolor(FL_FOREGROUND_COLOR);
  270. o->callback((Fl_Callback*)cb_RND2);
  271. o->align(Fl_Align(FL_ALIGN_CENTER));
  272. o->when(FL_WHEN_RELEASE);
  273. } // Fl_Osc_Button* o
  274. { Fl_Osc_Button* o = new Fl_Osc_Button(566, 264, 42, 12, "RND1");
  275. o->tooltip("Randomize the resonance function");
  276. o->box(FL_THIN_UP_BOX);
  277. o->color(FL_BACKGROUND_COLOR);
  278. o->selection_color(FL_BACKGROUND_COLOR);
  279. o->labeltype(FL_NORMAL_LABEL);
  280. o->labelfont(1);
  281. o->labelsize(10);
  282. o->labelcolor(FL_FOREGROUND_COLOR);
  283. o->callback((Fl_Callback*)cb_RND1);
  284. o->align(Fl_Align(FL_ALIGN_CENTER));
  285. o->when(FL_WHEN_RELEASE);
  286. } // Fl_Osc_Button* o
  287. { Fl_Osc_Button* o = new Fl_Osc_Button(566, 288, 42, 12, "RND3");
  288. o->tooltip("Randomize the resonance function");
  289. o->box(FL_THIN_UP_BOX);
  290. o->color(FL_BACKGROUND_COLOR);
  291. o->selection_color(FL_BACKGROUND_COLOR);
  292. o->labeltype(FL_NORMAL_LABEL);
  293. o->labelfont(1);
  294. o->labelsize(10);
  295. o->labelcolor(FL_FOREGROUND_COLOR);
  296. o->callback((Fl_Callback*)cb_RND3);
  297. o->align(Fl_Align(FL_ALIGN_CENTER));
  298. o->when(FL_WHEN_RELEASE);
  299. } // Fl_Osc_Button* o
  300. { Fl_Osc_Check* o = p1st = new Fl_Osc_Check(365, 285, 45, 15, "P.1st");
  301. p1st->tooltip("Protect the fundamental frequency (do not damp the first harmonic)");
  302. p1st->box(FL_NO_BOX);
  303. p1st->down_box(FL_DOWN_BOX);
  304. p1st->color(FL_BACKGROUND_COLOR);
  305. p1st->selection_color(FL_FOREGROUND_COLOR);
  306. p1st->labeltype(FL_NORMAL_LABEL);
  307. p1st->labelfont(0);
  308. p1st->labelsize(10);
  309. p1st->labelcolor(FL_FOREGROUND_COLOR);
  310. p1st->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  311. p1st->when(FL_WHEN_RELEASE);
  312. o->init("Pprotectthefundamental");
  313. } // Fl_Osc_Check* p1st
  314. { Fl_Osc_Button* o = new Fl_Osc_Button(365, 265, 46, 15, "InterpP");
  315. o->tooltip("Interpolate the peaks");
  316. o->box(FL_THIN_UP_BOX);
  317. o->color(FL_BACKGROUND_COLOR);
  318. o->selection_color(FL_BACKGROUND_COLOR);
  319. o->labeltype(FL_NORMAL_LABEL);
  320. o->labelfont(1);
  321. o->labelsize(10);
  322. o->labelcolor(FL_FOREGROUND_COLOR);
  323. o->callback((Fl_Callback*)cb_InterpP);
  324. o->align(Fl_Align(FL_ALIGN_CENTER));
  325. o->when(FL_WHEN_RELEASE);
  326. } // Fl_Osc_Button* o
  327. { Fl_Osc_Slider* o = centerfreq = new Fl_Osc_Slider(260, 268, 90, 14);
  328. centerfreq->type(5);
  329. centerfreq->box(FL_FLAT_BOX);
  330. centerfreq->color(FL_BACKGROUND_COLOR);
  331. centerfreq->selection_color(FL_BACKGROUND_COLOR);
  332. centerfreq->labeltype(FL_NORMAL_LABEL);
  333. centerfreq->labelfont(0);
  334. centerfreq->labelsize(10);
  335. centerfreq->labelcolor(FL_FOREGROUND_COLOR);
  336. centerfreq->maximum(127);
  337. centerfreq->step(1);
  338. centerfreq->callback((Fl_Callback*)cb_centerfreq);
  339. centerfreq->align(Fl_Align(FL_ALIGN_BOTTOM));
  340. centerfreq->when(FL_WHEN_CHANGED);
  341. o->init("Pcenterfreq", 'i');o->reset_value=64;
  342. } // Fl_Osc_Slider* centerfreq
  343. { Fl_Osc_Slider* o = octavesfreq = new Fl_Osc_Slider(260, 286, 90, 14);
  344. octavesfreq->type(5);
  345. octavesfreq->box(FL_FLAT_BOX);
  346. octavesfreq->color(FL_BACKGROUND_COLOR);
  347. octavesfreq->selection_color(FL_BACKGROUND_COLOR);
  348. octavesfreq->labeltype(FL_NORMAL_LABEL);
  349. octavesfreq->labelfont(0);
  350. octavesfreq->labelsize(10);
  351. octavesfreq->labelcolor(FL_FOREGROUND_COLOR);
  352. octavesfreq->maximum(127);
  353. octavesfreq->step(1);
  354. octavesfreq->callback((Fl_Callback*)cb_octavesfreq);
  355. octavesfreq->align(Fl_Align(FL_ALIGN_BOTTOM));
  356. octavesfreq->when(FL_WHEN_CHANGED);
  357. o->init("Poctavesfreq", 'i');o->reset_value=64;
  358. } // Fl_Osc_Slider* octavesfreq
  359. { Fl_Button* o = new Fl_Button(625, 275, 25, 15, "C");
  360. o->box(FL_THIN_UP_BOX);
  361. o->color((Fl_Color)179);
  362. o->labelfont(1);
  363. o->labelsize(11);
  364. o->labelcolor((Fl_Color)55);
  365. o->callback((Fl_Callback*)cb_C);
  366. } // Fl_Button* o
  367. { Fl_Button* o = new Fl_Button(655, 275, 25, 15, "P");
  368. o->box(FL_THIN_UP_BOX);
  369. o->color((Fl_Color)179);
  370. o->labelfont(1);
  371. o->labelsize(11);
  372. o->labelcolor((Fl_Color)55);
  373. o->callback((Fl_Callback*)cb_P);
  374. } // Fl_Button* o
  375. { applybutton = new Fl_Button(690, 265, 85, 15, "Apply");
  376. applybutton->box(FL_THIN_UP_BOX);
  377. applybutton->labelfont(1);
  378. applybutton->labelsize(11);
  379. applybutton->callback((Fl_Callback*)cb_applybutton);
  380. } // Fl_Button* applybutton
  381. { rg = new Fl_Resonance_Graph(6, 5, 768, 256);
  382. rg->box(FL_BORDER_BOX);
  383. rg->color(FL_BACKGROUND_COLOR);
  384. rg->selection_color(FL_BACKGROUND_COLOR);
  385. rg->labeltype(FL_NORMAL_LABEL);
  386. rg->labelfont(0);
  387. rg->labelsize(14);
  388. rg->labelcolor(FL_FOREGROUND_COLOR);
  389. rg->align(Fl_Align(FL_ALIGN_CENTER));
  390. rg->when(FL_WHEN_RELEASE);
  391. } // Fl_Resonance_Graph* rg
  392. resonancewindow->end();
  393. } // Fl_Osc_Window* resonancewindow
  394. return resonancewindow;
  395. }
  396. ResonanceUI::ResonanceUI(Fl_Osc_Interface *osc, std::string loc) {
  397. assert(osc);
  398. cbwidget=NULL;
  399. cbapplywidget=NULL;
  400. make_window(osc, loc);
  401. rg->init(khzvalue,dbvalue);
  402. applybutton->hide();
  403. }
  404. ResonanceUI::~ResonanceUI() {
  405. resonancewindow->hide();
  406. delete resonancewindow;
  407. }
  408. void ResonanceUI::redrawPADnoteApply() {
  409. rg->update();
  410. if (cbwidget!=NULL) {
  411. cbwidget->do_callback();
  412. applybutton->color(FL_RED);
  413. applybutton->redraw();
  414. };
  415. }
  416. void ResonanceUI::setcbwidget(Fl_Widget *cbwidget,Fl_Widget *cbapplywidget) {
  417. this->cbwidget=cbwidget;
  418. this->cbapplywidget=cbapplywidget;
  419. rg->setcbwidget(cbwidget,applybutton);
  420. applybutton->show();
  421. }
  422. void ResonanceUI::refresh() {
  423. redrawPADnoteApply();
  424. //TODO fix me when controls are relocatable
  425. //enabled->value(respar->Penabled);
  426. //maxdb->value(respar->PmaxdB);
  427. //maxdbvo->value(respar->PmaxdB);
  428. //
  429. //centerfreqvo->value(respar->getcenterfreq()/1000.0);
  430. //octavesfreqvo->value(respar->getoctavesfreq());
  431. //
  432. //centerfreq->value(respar->Pcenterfreq);
  433. //octavesfreq->value(respar->Poctavesfreq);
  434. //
  435. //p1st->value(respar->Pprotectthefundamental);
  436. rg->update();
  437. }