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.

1353 lines
48KB

  1. // generated by Fast Light User Interface Designer (fluid) version 1.0300
  2. #include "external/zynaddsubfx/UI/EnvelopeUI.h"
  3. //Copyright (c) 2002-2005 Nasca Octavian Paul
  4. //License: GNU GPL version 2 or later
  5. PointButton::PointButton(int x,int y, int w, int h, const char *label):Fl_Button(x,y,w,h,label),Fl_Osc_Widget(this) {
  6. }
  7. void PointButton::rebase(std::string new_base) {
  8. loc = new_base;
  9. }
  10. void PointButton::init(std::string path_) {
  11. ext = path_;
  12. }
  13. void EnvelopeUI::cb_C_i(Fl_Button*, void*) {
  14. presetsui->copy(freemodeeditwindow->loc());
  15. }
  16. void EnvelopeUI::cb_C(Fl_Button* o, void* v) {
  17. ((EnvelopeUI*)(o->parent()->user_data()))->cb_C_i(o,v);
  18. }
  19. void EnvelopeUI::cb_P_i(Fl_Button*, void*) {
  20. presetsui->paste(freemodeeditwindow->loc(),this);
  21. }
  22. void EnvelopeUI::cb_P(Fl_Button* o, void* v) {
  23. ((EnvelopeUI*)(o->parent()->user_data()))->cb_P_i(o,v);
  24. }
  25. void EnvelopeUI::cb_addpoint_i(PointButton* o, void*) {
  26. if(freeedit->lastpoint >= MAX_ENVELOPE_POINTS - 1)
  27. return;
  28. o->oscWrite("addPoint", "i", freeedit->lastpoint);
  29. freeedit->lastpoint+=1;
  30. freeedit->update();
  31. envfree->redraw();
  32. sustaincounter->update();
  33. //sustaincounter->value(Penvsustain);
  34. //sustaincounter->maximum(Penvpoints-2);
  35. }
  36. void EnvelopeUI::cb_addpoint(PointButton* o, void* v) {
  37. ((EnvelopeUI*)(o->parent()->user_data()))->cb_addpoint_i(o,v);
  38. }
  39. void EnvelopeUI::cb_freeedit_i(EnvelopeFreeEdit* o, void*) {
  40. sustaincounter->maximum(o->Penvpoints-2);
  41. }
  42. void EnvelopeUI::cb_freeedit(EnvelopeFreeEdit* o, void* v) {
  43. ((EnvelopeUI*)(o->parent()->user_data()))->cb_freeedit_i(o,v);
  44. }
  45. void EnvelopeUI::cb_deletepoint_i(PointButton* o, void*) {
  46. o->oscWrite("delPoint", "i", freeedit->lastpoint);
  47. freeedit->lastpoint-=1;
  48. freeedit->update();
  49. envfree->redraw();
  50. sustaincounter->update();
  51. //sustaincounter->value(Penvsustain);
  52. //sustaincounter->maximum(Penvpoints-2);
  53. }
  54. void EnvelopeUI::cb_deletepoint(PointButton* o, void* v) {
  55. ((EnvelopeUI*)(o->parent()->user_data()))->cb_deletepoint_i(o,v);
  56. }
  57. void EnvelopeUI::cb_Close_i(Fl_Button*, void*) {
  58. freemodeeditwindow->hide();
  59. }
  60. void EnvelopeUI::cb_Close(Fl_Button* o, void* v) {
  61. ((EnvelopeUI*)(o->parent()->user_data()))->cb_Close_i(o,v);
  62. }
  63. void EnvelopeUI::cb_sustaincounter_i(Fl_Osc_Counter*, void*) {
  64. freeedit->redraw();
  65. envfree->redraw();
  66. }
  67. void EnvelopeUI::cb_sustaincounter(Fl_Osc_Counter* o, void* v) {
  68. ((EnvelopeUI*)(o->parent()->user_data()))->cb_sustaincounter_i(o,v);
  69. }
  70. void EnvelopeUI::cb_freemodehack_i(Fl_Osc_Check*, void*) {
  71. refresh_display();
  72. }
  73. void EnvelopeUI::cb_freemodehack(Fl_Osc_Check* o, void* v) {
  74. ((EnvelopeUI*)(o->parent()->user_data()))->cb_freemodehack_i(o,v);
  75. }
  76. void EnvelopeUI::cb_Cancel_i(Fl_Osc_Button*, void*) {
  77. disable_freemode();
  78. }
  79. void EnvelopeUI::cb_Cancel(Fl_Osc_Button* o, void* v) {
  80. ((EnvelopeUI*)(o->parent()->user_data()))->cb_Cancel_i(o,v);
  81. }
  82. void EnvelopeUI::cb_C1_i(Fl_Button*, void*) {
  83. presetsui->copy(envADSR->loc());
  84. }
  85. void EnvelopeUI::cb_C1(Fl_Button* o, void* v) {
  86. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_C1_i(o,v);
  87. }
  88. void EnvelopeUI::cb_P1_i(Fl_Button*, void*) {
  89. presetsui->paste(envADSR->loc(),this);
  90. }
  91. void EnvelopeUI::cb_P1(Fl_Button* o, void* v) {
  92. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_P1_i(o,v);
  93. }
  94. void EnvelopeUI::cb_e1adt_i(Fl_Osc_Dial*, void*) {
  95. freeedit->redraw();
  96. }
  97. void EnvelopeUI::cb_e1adt(Fl_Osc_Dial* o, void* v) {
  98. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e1adt_i(o,v);
  99. }
  100. void EnvelopeUI::cb_e1ddt_i(Fl_Osc_Dial*, void*) {
  101. freeedit->redraw();
  102. }
  103. void EnvelopeUI::cb_e1ddt(Fl_Osc_Dial* o, void* v) {
  104. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e1ddt_i(o,v);
  105. }
  106. void EnvelopeUI::cb_e1rdt_i(Fl_Osc_Dial*, void*) {
  107. freeedit->redraw();
  108. }
  109. void EnvelopeUI::cb_e1rdt(Fl_Osc_Dial* o, void* v) {
  110. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e1rdt_i(o,v);
  111. }
  112. void EnvelopeUI::cb_e1sval_i(Fl_Osc_Dial*, void*) {
  113. freeedit->redraw();
  114. }
  115. void EnvelopeUI::cb_e1sval(Fl_Osc_Dial* o, void* v) {
  116. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e1sval_i(o,v);
  117. }
  118. void EnvelopeUI::cb_E_i(Fl_Osc_Button*, void*) {
  119. open_as_freemode();
  120. }
  121. void EnvelopeUI::cb_E(Fl_Osc_Button* o, void* v) {
  122. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_E_i(o,v);
  123. }
  124. void EnvelopeUI::cb_C2_i(Fl_Button*, void*) {
  125. presetsui->copy(envASR->loc());
  126. }
  127. void EnvelopeUI::cb_C2(Fl_Button* o, void* v) {
  128. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_C2_i(o,v);
  129. }
  130. void EnvelopeUI::cb_P2_i(Fl_Button*, void*) {
  131. presetsui->paste(envASR->loc(),this);
  132. }
  133. void EnvelopeUI::cb_P2(Fl_Button* o, void* v) {
  134. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_P2_i(o,v);
  135. }
  136. void EnvelopeUI::cb_e2aval_i(Fl_Osc_Dial*, void*) {
  137. freeedit->redraw();
  138. }
  139. void EnvelopeUI::cb_e2aval(Fl_Osc_Dial* o, void* v) {
  140. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e2aval_i(o,v);
  141. }
  142. void EnvelopeUI::cb_e2adt_i(Fl_Osc_Dial*, void*) {
  143. freeedit->redraw();
  144. }
  145. void EnvelopeUI::cb_e2adt(Fl_Osc_Dial* o, void* v) {
  146. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e2adt_i(o,v);
  147. }
  148. void EnvelopeUI::cb_e2rval_i(Fl_Osc_Dial*, void*) {
  149. freeedit->redraw();
  150. }
  151. void EnvelopeUI::cb_e2rval(Fl_Osc_Dial* o, void* v) {
  152. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e2rval_i(o,v);
  153. }
  154. void EnvelopeUI::cb_e2rdt_i(Fl_Osc_Dial*, void*) {
  155. freeedit->redraw();
  156. }
  157. void EnvelopeUI::cb_e2rdt(Fl_Osc_Dial* o, void* v) {
  158. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e2rdt_i(o,v);
  159. }
  160. void EnvelopeUI::cb_E1_i(Fl_Osc_Button*, void*) {
  161. open_as_freemode();
  162. }
  163. void EnvelopeUI::cb_E1(Fl_Osc_Button* o, void* v) {
  164. ((EnvelopeUI*)(o->parent()->user_data()))->cb_E1_i(o,v);
  165. }
  166. void EnvelopeUI::cb_C3_i(Fl_Button*, void*) {
  167. presetsui->copy(envADSRfilter->loc());
  168. }
  169. void EnvelopeUI::cb_C3(Fl_Button* o, void* v) {
  170. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_C3_i(o,v);
  171. }
  172. void EnvelopeUI::cb_P3_i(Fl_Button*, void*) {
  173. presetsui->paste(envADSRfilter->loc(),this);
  174. }
  175. void EnvelopeUI::cb_P3(Fl_Button* o, void* v) {
  176. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_P3_i(o,v);
  177. }
  178. void EnvelopeUI::cb_e3aval_i(Fl_Osc_Dial*, void*) {
  179. freeedit->redraw();
  180. }
  181. void EnvelopeUI::cb_e3aval(Fl_Osc_Dial* o, void* v) {
  182. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3aval_i(o,v);
  183. }
  184. void EnvelopeUI::cb_e3adt_i(Fl_Osc_Dial*, void*) {
  185. freeedit->redraw();
  186. }
  187. void EnvelopeUI::cb_e3adt(Fl_Osc_Dial* o, void* v) {
  188. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3adt_i(o,v);
  189. }
  190. void EnvelopeUI::cb_e3dval_i(Fl_Osc_Dial*, void*) {
  191. freeedit->redraw();
  192. }
  193. void EnvelopeUI::cb_e3dval(Fl_Osc_Dial* o, void* v) {
  194. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3dval_i(o,v);
  195. }
  196. void EnvelopeUI::cb_e3ddt_i(Fl_Osc_Dial*, void*) {
  197. freeedit->redraw();
  198. }
  199. void EnvelopeUI::cb_e3ddt(Fl_Osc_Dial* o, void* v) {
  200. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3ddt_i(o,v);
  201. }
  202. void EnvelopeUI::cb_e3rdt_i(Fl_Osc_Dial*, void*) {
  203. freeedit->redraw();
  204. }
  205. void EnvelopeUI::cb_e3rdt(Fl_Osc_Dial* o, void* v) {
  206. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3rdt_i(o,v);
  207. }
  208. void EnvelopeUI::cb_e3rval_i(Fl_Osc_Dial*, void*) {
  209. freeedit->redraw();
  210. }
  211. void EnvelopeUI::cb_e3rval(Fl_Osc_Dial* o, void* v) {
  212. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3rval_i(o,v);
  213. }
  214. void EnvelopeUI::cb_E2_i(Fl_Osc_Button*, void*) {
  215. open_as_freemode();
  216. }
  217. void EnvelopeUI::cb_E2(Fl_Osc_Button* o, void* v) {
  218. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_E2_i(o,v);
  219. }
  220. void EnvelopeUI::cb_C4_i(Fl_Button*, void*) {
  221. presetsui->copy(envASRbw->loc());
  222. }
  223. void EnvelopeUI::cb_C4(Fl_Button* o, void* v) {
  224. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_C4_i(o,v);
  225. }
  226. void EnvelopeUI::cb_P4_i(Fl_Button*, void*) {
  227. presetsui->paste(envASRbw->loc(),this);
  228. }
  229. void EnvelopeUI::cb_P4(Fl_Button* o, void* v) {
  230. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_P4_i(o,v);
  231. }
  232. void EnvelopeUI::cb_e4aval_i(Fl_Osc_Dial*, void*) {
  233. freeedit->redraw();
  234. }
  235. void EnvelopeUI::cb_e4aval(Fl_Osc_Dial* o, void* v) {
  236. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e4aval_i(o,v);
  237. }
  238. void EnvelopeUI::cb_e4adt_i(Fl_Osc_Dial*, void*) {
  239. freeedit->redraw();
  240. }
  241. void EnvelopeUI::cb_e4adt(Fl_Osc_Dial* o, void* v) {
  242. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e4adt_i(o,v);
  243. }
  244. void EnvelopeUI::cb_e4rval_i(Fl_Osc_Dial*, void*) {
  245. freeedit->redraw();
  246. }
  247. void EnvelopeUI::cb_e4rval(Fl_Osc_Dial* o, void* v) {
  248. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e4rval_i(o,v);
  249. }
  250. void EnvelopeUI::cb_e4rdt_i(Fl_Osc_Dial*, void*) {
  251. freeedit->redraw();
  252. }
  253. void EnvelopeUI::cb_e4rdt(Fl_Osc_Dial* o, void* v) {
  254. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e4rdt_i(o,v);
  255. }
  256. void EnvelopeUI::cb_E3_i(Fl_Osc_Button*, void*) {
  257. open_as_freemode();
  258. }
  259. void EnvelopeUI::cb_E3(Fl_Osc_Button* o, void* v) {
  260. ((EnvelopeUI*)(o->parent()->user_data()))->cb_E3_i(o,v);
  261. }
  262. void EnvelopeUI::cb_E4_i(Fl_Osc_Button*, void*) {
  263. open_as_freemode();
  264. }
  265. void EnvelopeUI::cb_E4(Fl_Osc_Button* o, void* v) {
  266. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_E4_i(o,v);
  267. }
  268. void EnvelopeUI::cb_freeeditsmall_i(EnvelopeFreeEdit*, void*) {
  269. envfree->redraw();
  270. }
  271. void EnvelopeUI::cb_freeeditsmall(EnvelopeFreeEdit* o, void* v) {
  272. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_freeeditsmall_i(o,v);
  273. }
  274. void EnvelopeUI::cb_C5_i(Fl_Button*, void*) {
  275. presetsui->copy(envfree->loc());
  276. }
  277. void EnvelopeUI::cb_C5(Fl_Button* o, void* v) {
  278. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_C5_i(o,v);
  279. }
  280. void EnvelopeUI::cb_P5_i(Fl_Button*, void*) {
  281. presetsui->paste(envfree->loc(),this);
  282. }
  283. void EnvelopeUI::cb_P5(Fl_Button* o, void* v) {
  284. ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_P5_i(o,v);
  285. }
  286. EnvelopeUI::EnvelopeUI(int x,int y, int w, int h, const char *label):Fl_Osc_Group(x,y,w,h) {
  287. freemodeeditwindow=NULL;
  288. envADSR=NULL;
  289. envASR=NULL;
  290. envADSRfilter=NULL;
  291. envASRbw=NULL;
  292. envfree=NULL;
  293. }
  294. EnvelopeUI::~EnvelopeUI() {
  295. envwindow->hide();
  296. hide();
  297. freemodeeditwindow->hide();
  298. delete (freemodeeditwindow);
  299. }
  300. Fl_Osc_Window* EnvelopeUI::make_freemode_edit_window() {
  301. { freemodeeditwindow = new Fl_Osc_Window(575, 180, "Envelope");
  302. freemodeeditwindow->box(FL_FLAT_BOX);
  303. freemodeeditwindow->color(FL_BACKGROUND_COLOR);
  304. freemodeeditwindow->selection_color(FL_BACKGROUND_COLOR);
  305. freemodeeditwindow->labeltype(FL_NO_LABEL);
  306. freemodeeditwindow->labelfont(0);
  307. freemodeeditwindow->labelsize(14);
  308. freemodeeditwindow->labelcolor(FL_FOREGROUND_COLOR);
  309. freemodeeditwindow->user_data((void*)(this));
  310. freemodeeditwindow->align(Fl_Align(FL_ALIGN_TOP));
  311. freemodeeditwindow->when(FL_WHEN_RELEASE);
  312. { Fl_Button* o = new Fl_Button(465, 160, 15, 15, "C");
  313. o->box(FL_THIN_UP_BOX);
  314. o->color((Fl_Color)179);
  315. o->labelfont(1);
  316. o->labelsize(10);
  317. o->labelcolor((Fl_Color)55);
  318. o->callback((Fl_Callback*)cb_C);
  319. freemodeeditwindow->init(osc, loc());
  320. } // Fl_Button* o
  321. { Fl_Button* o = new Fl_Button(482, 160, 15, 15, "P");
  322. o->box(FL_THIN_UP_BOX);
  323. o->color((Fl_Color)179);
  324. o->labelfont(1);
  325. o->labelsize(10);
  326. o->labelcolor((Fl_Color)55);
  327. o->callback((Fl_Callback*)cb_P);
  328. } // Fl_Button* o
  329. { PointButton* o = addpoint = new PointButton(90, 155, 80, 20, "Add pt");
  330. addpoint->box(FL_THIN_UP_BOX);
  331. addpoint->color(FL_BACKGROUND_COLOR);
  332. addpoint->selection_color(FL_BACKGROUND_COLOR);
  333. addpoint->labeltype(FL_NORMAL_LABEL);
  334. addpoint->labelfont(0);
  335. addpoint->labelsize(11);
  336. addpoint->labelcolor(FL_FOREGROUND_COLOR);
  337. addpoint->callback((Fl_Callback*)cb_addpoint);
  338. addpoint->align(Fl_Align(FL_ALIGN_CENTER));
  339. addpoint->when(FL_WHEN_RELEASE);
  340. (void)o->init("addPoint");
  341. } // PointButton* addpoint
  342. { EnvelopeFreeEdit* o = freeedit = new EnvelopeFreeEdit(5, 5, 565, 145, "Envelope");
  343. freeedit->box(FL_FLAT_BOX);
  344. freeedit->color(FL_FOREGROUND_COLOR);
  345. freeedit->selection_color(FL_BACKGROUND_COLOR);
  346. freeedit->labeltype(FL_NORMAL_LABEL);
  347. freeedit->labelfont(0);
  348. freeedit->labelsize(14);
  349. freeedit->labelcolor(FL_FOREGROUND_COLOR);
  350. freeedit->callback((Fl_Callback*)cb_freeedit);
  351. freeedit->align(Fl_Align(FL_ALIGN_CENTER));
  352. freeedit->when(FL_WHEN_RELEASE);
  353. o->init();
  354. } // EnvelopeFreeEdit* freeedit
  355. { PointButton* o = deletepoint = new PointButton(175, 155, 85, 20, "Delete pt");
  356. deletepoint->box(FL_THIN_UP_BOX);
  357. deletepoint->color(FL_BACKGROUND_COLOR);
  358. deletepoint->selection_color(FL_BACKGROUND_COLOR);
  359. deletepoint->labeltype(FL_NORMAL_LABEL);
  360. deletepoint->labelfont(0);
  361. deletepoint->labelsize(11);
  362. deletepoint->labelcolor(FL_FOREGROUND_COLOR);
  363. deletepoint->callback((Fl_Callback*)cb_deletepoint);
  364. deletepoint->align(Fl_Align(FL_ALIGN_CENTER));
  365. deletepoint->when(FL_WHEN_RELEASE);
  366. (void)o->init("delPoint");
  367. } // PointButton* deletepoint
  368. { Fl_Osc_Check* o = forcedreleasecheck = new Fl_Osc_Check(410, 165, 40, 15, "frcR");
  369. forcedreleasecheck->tooltip("Forced Release");
  370. forcedreleasecheck->box(FL_NO_BOX);
  371. forcedreleasecheck->down_box(FL_DOWN_BOX);
  372. forcedreleasecheck->color(FL_BACKGROUND_COLOR);
  373. forcedreleasecheck->selection_color(FL_FOREGROUND_COLOR);
  374. forcedreleasecheck->labeltype(FL_NORMAL_LABEL);
  375. forcedreleasecheck->labelfont(0);
  376. forcedreleasecheck->labelsize(10);
  377. forcedreleasecheck->labelcolor(FL_FOREGROUND_COLOR);
  378. forcedreleasecheck->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  379. forcedreleasecheck->when(FL_WHEN_RELEASE);
  380. o->init("Pforcedrelease");
  381. } // Fl_Osc_Check* forcedreleasecheck
  382. { Fl_Osc_Dial* o = envstretchdial = new Fl_Osc_Dial(380, 155, 25, 25, "Str.");
  383. envstretchdial->tooltip("Envelope stretch (on lower notes make the envelope longer)");
  384. envstretchdial->box(FL_ROUND_UP_BOX);
  385. envstretchdial->color(FL_BACKGROUND_COLOR);
  386. envstretchdial->selection_color(FL_INACTIVE_COLOR);
  387. envstretchdial->labeltype(FL_NORMAL_LABEL);
  388. envstretchdial->labelfont(0);
  389. envstretchdial->labelsize(10);
  390. envstretchdial->labelcolor(FL_FOREGROUND_COLOR);
  391. envstretchdial->maximum(127);
  392. envstretchdial->step(1);
  393. envstretchdial->align(Fl_Align(FL_ALIGN_LEFT));
  394. envstretchdial->when(FL_WHEN_CHANGED);
  395. o->init("Penvstretch");
  396. } // Fl_Osc_Dial* envstretchdial
  397. { Fl_Button* o = new Fl_Button(510, 155, 60, 20, "Close");
  398. o->box(FL_THIN_UP_BOX);
  399. o->callback((Fl_Callback*)cb_Close);
  400. } // Fl_Button* o
  401. { Fl_Osc_Check* o = linearenvelopecheck = new Fl_Osc_Check(410, 151, 30, 15, "L");
  402. linearenvelopecheck->tooltip("Linear Envelope");
  403. linearenvelopecheck->box(FL_NO_BOX);
  404. linearenvelopecheck->down_box(FL_DOWN_BOX);
  405. linearenvelopecheck->color(FL_BACKGROUND_COLOR);
  406. linearenvelopecheck->selection_color(FL_FOREGROUND_COLOR);
  407. linearenvelopecheck->labeltype(FL_NORMAL_LABEL);
  408. linearenvelopecheck->labelfont(0);
  409. linearenvelopecheck->labelsize(10);
  410. linearenvelopecheck->labelcolor(FL_FOREGROUND_COLOR);
  411. linearenvelopecheck->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  412. linearenvelopecheck->when(FL_WHEN_RELEASE);
  413. o->init("Plinearenvelope");
  414. } // Fl_Osc_Check* linearenvelopecheck
  415. { Fl_Osc_Counter* o = sustaincounter = new Fl_Osc_Counter(305, 155, 40, 15, "Sust");
  416. sustaincounter->tooltip("Sustain (0 is disabled)");
  417. sustaincounter->type(1);
  418. sustaincounter->box(FL_UP_BOX);
  419. sustaincounter->color(FL_BACKGROUND_COLOR);
  420. sustaincounter->selection_color(FL_INACTIVE_COLOR);
  421. sustaincounter->labeltype(FL_NORMAL_LABEL);
  422. sustaincounter->labelfont(0);
  423. sustaincounter->labelsize(11);
  424. sustaincounter->labelcolor(FL_FOREGROUND_COLOR);
  425. sustaincounter->minimum(0);
  426. sustaincounter->maximum(127);
  427. sustaincounter->step(1);
  428. sustaincounter->callback((Fl_Callback*)cb_sustaincounter);
  429. sustaincounter->align(Fl_Align(FL_ALIGN_LEFT));
  430. sustaincounter->when(FL_WHEN_CHANGED);
  431. o->init("Penvsustain");
  432. } // Fl_Osc_Counter* sustaincounter
  433. { Fl_Osc_Check* o = freemodehack = new Fl_Osc_Check(0, 0, 0, 0);
  434. freemodehack->box(FL_NO_BOX);
  435. freemodehack->down_box(FL_DOWN_BOX);
  436. freemodehack->color(FL_BACKGROUND_COLOR);
  437. freemodehack->selection_color(FL_FOREGROUND_COLOR);
  438. freemodehack->labeltype(FL_NORMAL_LABEL);
  439. freemodehack->labelfont(0);
  440. freemodehack->labelsize(14);
  441. freemodehack->labelcolor(FL_FOREGROUND_COLOR);
  442. freemodehack->callback((Fl_Callback*)cb_freemodehack);
  443. freemodehack->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  444. freemodehack->when(FL_WHEN_RELEASE);
  445. o->init("Pfreemode");o->hide();
  446. } // Fl_Osc_Check* freemodehack
  447. { Fl_Osc_Button* o = new Fl_Osc_Button(5, 155, 80, 20, "Cancel");
  448. o->tooltip("Cancel freemode editing");
  449. o->box(FL_THIN_UP_BOX);
  450. o->color(FL_BACKGROUND_COLOR);
  451. o->selection_color(FL_BACKGROUND_COLOR);
  452. o->labeltype(FL_NORMAL_LABEL);
  453. o->labelfont(0);
  454. o->labelsize(11);
  455. o->labelcolor((Fl_Color)1);
  456. o->callback((Fl_Callback*)cb_Cancel);
  457. o->align(Fl_Align(FL_ALIGN_CENTER));
  458. o->when(FL_WHEN_RELEASE);
  459. } // Fl_Osc_Button* o
  460. freemodeeditwindow->end();
  461. freemodeeditwindow->resizable(freemodeeditwindow);
  462. } // Fl_Osc_Window* freemodeeditwindow
  463. return freemodeeditwindow;
  464. }
  465. Fl_Osc_Group* EnvelopeUI::make_ADSR_window() {
  466. { envADSR = new Fl_Osc_Group(0, 0, 205, 70);
  467. envADSR->box(FL_FLAT_BOX);
  468. envADSR->color(FL_LIGHT1);
  469. envADSR->selection_color(FL_BACKGROUND_COLOR);
  470. envADSR->labeltype(FL_NO_LABEL);
  471. envADSR->labelfont(1);
  472. envADSR->labelsize(14);
  473. envADSR->labelcolor(FL_FOREGROUND_COLOR);
  474. envADSR->user_data((void*)(this));
  475. envADSR->align(Fl_Align(FL_ALIGN_TOP));
  476. envADSR->when(FL_WHEN_RELEASE);
  477. { Fl_Group* o = new Fl_Group(0, 0, 205, 70, "Amplitude Envelope");
  478. o->box(FL_UP_BOX);
  479. o->color(FL_CYAN);
  480. o->labeltype(FL_ENGRAVED_LABEL);
  481. o->labelsize(10);
  482. o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
  483. { Fl_Button* o = new Fl_Button(150, 5, 15, 15, "C");
  484. o->box(FL_THIN_UP_BOX);
  485. o->color((Fl_Color)179);
  486. o->labelfont(1);
  487. o->labelsize(10);
  488. o->labelcolor((Fl_Color)55);
  489. o->callback((Fl_Callback*)cb_C1);
  490. } // Fl_Button* o
  491. { Fl_Button* o = new Fl_Button(167, 5, 15, 15, "P");
  492. o->box(FL_THIN_UP_BOX);
  493. o->color((Fl_Color)179);
  494. o->labelfont(1);
  495. o->labelsize(10);
  496. o->labelcolor((Fl_Color)55);
  497. o->callback((Fl_Callback*)cb_P1);
  498. } // Fl_Button* o
  499. { Fl_Osc_Dial* o = e1adt = new Fl_Osc_Dial(5, 20, 30, 30, "A.dt");
  500. e1adt->tooltip("Attack time");
  501. e1adt->box(FL_ROUND_UP_BOX);
  502. e1adt->color(FL_BACKGROUND_COLOR);
  503. e1adt->selection_color(FL_INACTIVE_COLOR);
  504. e1adt->labeltype(FL_NORMAL_LABEL);
  505. e1adt->labelfont(0);
  506. e1adt->labelsize(10);
  507. e1adt->labelcolor(FL_FOREGROUND_COLOR);
  508. e1adt->maximum(127);
  509. e1adt->step(1);
  510. e1adt->callback((Fl_Callback*)cb_e1adt);
  511. e1adt->align(Fl_Align(FL_ALIGN_BOTTOM));
  512. e1adt->when(FL_WHEN_CHANGED);
  513. o->init("PA_dt");
  514. } // Fl_Osc_Dial* e1adt
  515. { Fl_Osc_Dial* o = e1ddt = new Fl_Osc_Dial(40, 20, 30, 30, "D.dt");
  516. e1ddt->tooltip("Decay time");
  517. e1ddt->box(FL_ROUND_UP_BOX);
  518. e1ddt->color(FL_BACKGROUND_COLOR);
  519. e1ddt->selection_color(FL_INACTIVE_COLOR);
  520. e1ddt->labeltype(FL_NORMAL_LABEL);
  521. e1ddt->labelfont(0);
  522. e1ddt->labelsize(10);
  523. e1ddt->labelcolor(FL_FOREGROUND_COLOR);
  524. e1ddt->maximum(127);
  525. e1ddt->step(1);
  526. e1ddt->callback((Fl_Callback*)cb_e1ddt);
  527. e1ddt->align(Fl_Align(FL_ALIGN_BOTTOM));
  528. e1ddt->when(FL_WHEN_CHANGED);
  529. o->init("PD_dt");
  530. } // Fl_Osc_Dial* e1ddt
  531. { Fl_Osc_Dial* o = e1rdt = new Fl_Osc_Dial(110, 20, 30, 30, "R.dt");
  532. e1rdt->tooltip("Release time");
  533. e1rdt->box(FL_ROUND_UP_BOX);
  534. e1rdt->color(FL_BACKGROUND_COLOR);
  535. e1rdt->selection_color(FL_INACTIVE_COLOR);
  536. e1rdt->labeltype(FL_NORMAL_LABEL);
  537. e1rdt->labelfont(0);
  538. e1rdt->labelsize(10);
  539. e1rdt->labelcolor(FL_FOREGROUND_COLOR);
  540. e1rdt->maximum(127);
  541. e1rdt->step(1);
  542. e1rdt->callback((Fl_Callback*)cb_e1rdt);
  543. e1rdt->align(Fl_Align(FL_ALIGN_BOTTOM));
  544. e1rdt->when(FL_WHEN_CHANGED);
  545. o->init("PR_dt");
  546. } // Fl_Osc_Dial* e1rdt
  547. { Fl_Osc_Dial* o = e1sval = new Fl_Osc_Dial(75, 20, 30, 30, "S.val");
  548. e1sval->tooltip("Sustain value");
  549. e1sval->box(FL_ROUND_UP_BOX);
  550. e1sval->color(FL_BACKGROUND_COLOR);
  551. e1sval->selection_color(FL_INACTIVE_COLOR);
  552. e1sval->labeltype(FL_NORMAL_LABEL);
  553. e1sval->labelfont(0);
  554. e1sval->labelsize(10);
  555. e1sval->labelcolor(FL_FOREGROUND_COLOR);
  556. e1sval->maximum(127);
  557. e1sval->step(1);
  558. e1sval->callback((Fl_Callback*)cb_e1sval);
  559. e1sval->align(Fl_Align(FL_ALIGN_BOTTOM));
  560. e1sval->when(FL_WHEN_CHANGED);
  561. o->init("PS_val");
  562. } // Fl_Osc_Dial* e1sval
  563. { Fl_Osc_Check* o = e1forcedrelease = new Fl_Osc_Check(180, 35, 20, 15, "frcR");
  564. e1forcedrelease->tooltip("Forced Release");
  565. e1forcedrelease->box(FL_NO_BOX);
  566. e1forcedrelease->down_box(FL_DOWN_BOX);
  567. e1forcedrelease->color(FL_BACKGROUND_COLOR);
  568. e1forcedrelease->selection_color(FL_FOREGROUND_COLOR);
  569. e1forcedrelease->labeltype(FL_NORMAL_LABEL);
  570. e1forcedrelease->labelfont(0);
  571. e1forcedrelease->labelsize(10);
  572. e1forcedrelease->labelcolor(FL_FOREGROUND_COLOR);
  573. e1forcedrelease->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT));
  574. e1forcedrelease->when(FL_WHEN_RELEASE);
  575. o->init("Pforcedrelease");
  576. } // Fl_Osc_Check* e1forcedrelease
  577. { Fl_Osc_Dial* o = e1envstretch = new Fl_Osc_Dial(145, 25, 25, 25, "Stretch");
  578. e1envstretch->tooltip("Envelope stretch (on lower notes makes the envelope longer)");
  579. e1envstretch->box(FL_ROUND_UP_BOX);
  580. e1envstretch->color(FL_BACKGROUND_COLOR);
  581. e1envstretch->selection_color(FL_INACTIVE_COLOR);
  582. e1envstretch->labeltype(FL_NORMAL_LABEL);
  583. e1envstretch->labelfont(0);
  584. e1envstretch->labelsize(10);
  585. e1envstretch->labelcolor(FL_FOREGROUND_COLOR);
  586. e1envstretch->maximum(127);
  587. e1envstretch->step(1);
  588. e1envstretch->align(Fl_Align(FL_ALIGN_BOTTOM));
  589. e1envstretch->when(FL_WHEN_CHANGED);
  590. o->init("Penvstretch");
  591. } // Fl_Osc_Dial* e1envstretch
  592. { Fl_Osc_Button* o = new Fl_Osc_Button(185, 5, 15, 15, "E");
  593. o->tooltip("Envelope window");
  594. o->box(FL_UP_BOX);
  595. o->color(FL_BACKGROUND_COLOR);
  596. o->selection_color(FL_BACKGROUND_COLOR);
  597. o->labeltype(FL_NORMAL_LABEL);
  598. o->labelfont(1);
  599. o->labelsize(10);
  600. o->labelcolor(FL_FOREGROUND_COLOR);
  601. o->callback((Fl_Callback*)cb_E);
  602. o->align(Fl_Align(FL_ALIGN_CENTER));
  603. o->when(FL_WHEN_RELEASE);
  604. } // Fl_Osc_Button* o
  605. { Fl_Osc_Check* o = e1linearenvelope = new Fl_Osc_Check(180, 20, 15, 15, "L");
  606. e1linearenvelope->tooltip("The evelope is linear");
  607. e1linearenvelope->box(FL_NO_BOX);
  608. e1linearenvelope->down_box(FL_DOWN_BOX);
  609. e1linearenvelope->color(FL_BACKGROUND_COLOR);
  610. e1linearenvelope->selection_color(FL_FOREGROUND_COLOR);
  611. e1linearenvelope->labeltype(FL_NORMAL_LABEL);
  612. e1linearenvelope->labelfont(0);
  613. e1linearenvelope->labelsize(10);
  614. e1linearenvelope->labelcolor(FL_FOREGROUND_COLOR);
  615. e1linearenvelope->align(Fl_Align(FL_ALIGN_LEFT));
  616. e1linearenvelope->when(FL_WHEN_RELEASE);
  617. o->init("Plinearenvelope");
  618. } // Fl_Osc_Check* e1linearenvelope
  619. set_module_parameters(o);
  620. o->end();
  621. } // Fl_Group* o
  622. envADSR->end();
  623. } // Fl_Osc_Group* envADSR
  624. return envADSR;
  625. }
  626. Fl_Osc_Group* EnvelopeUI::make_ASR_window() {
  627. { envASR = new Fl_Osc_Group(0, 0, 210, 70);
  628. envASR->box(FL_FLAT_BOX);
  629. envASR->color(FL_BACKGROUND_COLOR);
  630. envASR->selection_color(FL_BACKGROUND_COLOR);
  631. envASR->labeltype(FL_NO_LABEL);
  632. envASR->labelfont(0);
  633. envASR->labelsize(14);
  634. envASR->labelcolor(FL_FOREGROUND_COLOR);
  635. envASR->user_data((void*)(this));
  636. envASR->align(Fl_Align(FL_ALIGN_TOP));
  637. envASR->when(FL_WHEN_RELEASE);
  638. { Fl_Group* o = new Fl_Group(0, 0, 210, 70, "Frequency Envelope");
  639. o->box(FL_UP_BOX);
  640. o->color(FL_CYAN);
  641. o->labeltype(FL_ENGRAVED_LABEL);
  642. o->labelsize(10);
  643. o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
  644. { Fl_Button* o = new Fl_Button(155, 5, 15, 15, "C");
  645. o->box(FL_THIN_UP_BOX);
  646. o->color((Fl_Color)179);
  647. o->labelfont(1);
  648. o->labelsize(10);
  649. o->labelcolor((Fl_Color)55);
  650. o->callback((Fl_Callback*)cb_C2);
  651. } // Fl_Button* o
  652. { Fl_Button* o = new Fl_Button(172, 5, 15, 15, "P");
  653. o->box(FL_THIN_UP_BOX);
  654. o->color((Fl_Color)179);
  655. o->labelfont(1);
  656. o->labelsize(10);
  657. o->labelcolor((Fl_Color)55);
  658. o->callback((Fl_Callback*)cb_P2);
  659. } // Fl_Button* o
  660. { Fl_Osc_Dial* o = e2aval = new Fl_Osc_Dial(5, 20, 30, 30, "A.val");
  661. e2aval->tooltip("Starting value");
  662. e2aval->box(FL_ROUND_UP_BOX);
  663. e2aval->color(FL_BACKGROUND_COLOR);
  664. e2aval->selection_color(FL_INACTIVE_COLOR);
  665. e2aval->labeltype(FL_NORMAL_LABEL);
  666. e2aval->labelfont(0);
  667. e2aval->labelsize(10);
  668. e2aval->labelcolor(FL_FOREGROUND_COLOR);
  669. e2aval->maximum(127);
  670. e2aval->step(1);
  671. e2aval->callback((Fl_Callback*)cb_e2aval);
  672. e2aval->align(Fl_Align(FL_ALIGN_BOTTOM));
  673. e2aval->when(FL_WHEN_CHANGED);
  674. o->init("PA_val");
  675. } // Fl_Osc_Dial* e2aval
  676. { Fl_Osc_Dial* o = e2adt = new Fl_Osc_Dial(40, 20, 30, 30, "A.dt");
  677. e2adt->tooltip("Attack time");
  678. e2adt->box(FL_ROUND_UP_BOX);
  679. e2adt->color(FL_BACKGROUND_COLOR);
  680. e2adt->selection_color(FL_INACTIVE_COLOR);
  681. e2adt->labeltype(FL_NORMAL_LABEL);
  682. e2adt->labelfont(0);
  683. e2adt->labelsize(10);
  684. e2adt->labelcolor(FL_FOREGROUND_COLOR);
  685. e2adt->maximum(127);
  686. e2adt->step(1);
  687. e2adt->callback((Fl_Callback*)cb_e2adt);
  688. e2adt->align(Fl_Align(FL_ALIGN_BOTTOM));
  689. e2adt->when(FL_WHEN_CHANGED);
  690. o->init("PA_dt");
  691. } // Fl_Osc_Dial* e2adt
  692. { Fl_Osc_Dial* o = e2rval = new Fl_Osc_Dial(110, 20, 30, 30, "R.val");
  693. e2rval->tooltip("Release value");
  694. e2rval->box(FL_ROUND_UP_BOX);
  695. e2rval->color(FL_BACKGROUND_COLOR);
  696. e2rval->selection_color(FL_INACTIVE_COLOR);
  697. e2rval->labeltype(FL_NORMAL_LABEL);
  698. e2rval->labelfont(0);
  699. e2rval->labelsize(10);
  700. e2rval->labelcolor(FL_FOREGROUND_COLOR);
  701. e2rval->maximum(127);
  702. e2rval->step(1);
  703. e2rval->callback((Fl_Callback*)cb_e2rval);
  704. e2rval->align(Fl_Align(FL_ALIGN_BOTTOM));
  705. e2rval->when(FL_WHEN_CHANGED);
  706. o->init("PR_val");
  707. } // Fl_Osc_Dial* e2rval
  708. { Fl_Osc_Dial* o = e2rdt = new Fl_Osc_Dial(75, 20, 30, 30, "R.dt");
  709. e2rdt->tooltip("Release time");
  710. e2rdt->box(FL_ROUND_UP_BOX);
  711. e2rdt->color(FL_BACKGROUND_COLOR);
  712. e2rdt->selection_color(FL_INACTIVE_COLOR);
  713. e2rdt->labeltype(FL_NORMAL_LABEL);
  714. e2rdt->labelfont(0);
  715. e2rdt->labelsize(10);
  716. e2rdt->labelcolor(FL_FOREGROUND_COLOR);
  717. e2rdt->maximum(127);
  718. e2rdt->step(1);
  719. e2rdt->callback((Fl_Callback*)cb_e2rdt);
  720. e2rdt->align(Fl_Align(FL_ALIGN_BOTTOM));
  721. e2rdt->when(FL_WHEN_CHANGED);
  722. o->init("PR_dt");
  723. } // Fl_Osc_Dial* e2rdt
  724. { Fl_Osc_Dial* o = e2envstretch = new Fl_Osc_Dial(145, 25, 25, 25, "Stretch");
  725. e2envstretch->tooltip("Envelope stretch (on lower notes makes the envelope longer)");
  726. e2envstretch->box(FL_ROUND_UP_BOX);
  727. e2envstretch->color(FL_BACKGROUND_COLOR);
  728. e2envstretch->selection_color(FL_INACTIVE_COLOR);
  729. e2envstretch->labeltype(FL_NORMAL_LABEL);
  730. e2envstretch->labelfont(0);
  731. e2envstretch->labelsize(10);
  732. e2envstretch->labelcolor(FL_FOREGROUND_COLOR);
  733. e2envstretch->maximum(127);
  734. e2envstretch->step(1);
  735. e2envstretch->align(Fl_Align(FL_ALIGN_BOTTOM));
  736. e2envstretch->when(FL_WHEN_CHANGED);
  737. o->init("Penvstretch");
  738. } // Fl_Osc_Dial* e2envstretch
  739. { Fl_Osc_Check* o = e2forcedrelease = new Fl_Osc_Check(180, 25, 15, 25, "frcR");
  740. e2forcedrelease->tooltip("Forced release");
  741. e2forcedrelease->box(FL_NO_BOX);
  742. e2forcedrelease->down_box(FL_DOWN_BOX);
  743. e2forcedrelease->color(FL_BACKGROUND_COLOR);
  744. e2forcedrelease->selection_color(FL_FOREGROUND_COLOR);
  745. e2forcedrelease->labeltype(FL_NORMAL_LABEL);
  746. e2forcedrelease->labelfont(0);
  747. e2forcedrelease->labelsize(10);
  748. e2forcedrelease->labelcolor(FL_FOREGROUND_COLOR);
  749. e2forcedrelease->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT));
  750. e2forcedrelease->when(FL_WHEN_RELEASE);
  751. o->init("Pforcedrelease");
  752. } // Fl_Osc_Check* e2forcedrelease
  753. set_module_parameters(o);
  754. o->end();
  755. } // Fl_Group* o
  756. { Fl_Osc_Button* o = new Fl_Osc_Button(190, 5, 15, 15, "E");
  757. o->tooltip("Envelope window");
  758. o->box(FL_UP_BOX);
  759. o->color(FL_BACKGROUND_COLOR);
  760. o->selection_color(FL_BACKGROUND_COLOR);
  761. o->labeltype(FL_NORMAL_LABEL);
  762. o->labelfont(1);
  763. o->labelsize(10);
  764. o->labelcolor(FL_FOREGROUND_COLOR);
  765. o->callback((Fl_Callback*)cb_E1);
  766. o->align(Fl_Align(FL_ALIGN_CENTER));
  767. o->when(FL_WHEN_RELEASE);
  768. } // Fl_Osc_Button* o
  769. envASR->end();
  770. } // Fl_Osc_Group* envASR
  771. return envASR;
  772. }
  773. Fl_Osc_Group* EnvelopeUI::make_ADSRfilter_window() {
  774. { envADSRfilter = new Fl_Osc_Group(0, 0, 275, 70);
  775. envADSRfilter->box(FL_FLAT_BOX);
  776. envADSRfilter->color(FL_LIGHT1);
  777. envADSRfilter->selection_color(FL_BACKGROUND_COLOR);
  778. envADSRfilter->labeltype(FL_NO_LABEL);
  779. envADSRfilter->labelfont(1);
  780. envADSRfilter->labelsize(14);
  781. envADSRfilter->labelcolor(FL_FOREGROUND_COLOR);
  782. envADSRfilter->user_data((void*)(this));
  783. envADSRfilter->align(Fl_Align(FL_ALIGN_TOP));
  784. envADSRfilter->when(FL_WHEN_RELEASE);
  785. { Fl_Group* o = new Fl_Group(0, 0, 275, 70, "Filter Envelope");
  786. o->box(FL_UP_BOX);
  787. o->color(FL_CYAN);
  788. o->labeltype(FL_ENGRAVED_LABEL);
  789. o->labelsize(10);
  790. o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
  791. { Fl_Button* o = new Fl_Button(220, 5, 15, 15, "C");
  792. o->box(FL_THIN_UP_BOX);
  793. o->color((Fl_Color)179);
  794. o->labelfont(1);
  795. o->labelsize(10);
  796. o->labelcolor((Fl_Color)55);
  797. o->callback((Fl_Callback*)cb_C3);
  798. } // Fl_Button* o
  799. { Fl_Button* o = new Fl_Button(237, 5, 15, 15, "P");
  800. o->box(FL_THIN_UP_BOX);
  801. o->color((Fl_Color)179);
  802. o->labelfont(1);
  803. o->labelsize(10);
  804. o->labelcolor((Fl_Color)55);
  805. o->callback((Fl_Callback*)cb_P3);
  806. } // Fl_Button* o
  807. { Fl_Osc_Dial* o = e3aval = new Fl_Osc_Dial(5, 20, 30, 30, "A.val");
  808. e3aval->tooltip("Starting value");
  809. e3aval->box(FL_ROUND_UP_BOX);
  810. e3aval->color(FL_BACKGROUND_COLOR);
  811. e3aval->selection_color(FL_INACTIVE_COLOR);
  812. e3aval->labeltype(FL_NORMAL_LABEL);
  813. e3aval->labelfont(0);
  814. e3aval->labelsize(10);
  815. e3aval->labelcolor(FL_FOREGROUND_COLOR);
  816. e3aval->maximum(127);
  817. e3aval->step(1);
  818. e3aval->callback((Fl_Callback*)cb_e3aval);
  819. e3aval->align(Fl_Align(FL_ALIGN_BOTTOM));
  820. e3aval->when(FL_WHEN_CHANGED);
  821. o->init("PA_val");
  822. } // Fl_Osc_Dial* e3aval
  823. { Fl_Osc_Dial* o = e3adt = new Fl_Osc_Dial(40, 20, 30, 30, "A.dt");
  824. e3adt->tooltip("Attack time");
  825. e3adt->box(FL_ROUND_UP_BOX);
  826. e3adt->color(FL_BACKGROUND_COLOR);
  827. e3adt->selection_color(FL_INACTIVE_COLOR);
  828. e3adt->labeltype(FL_NORMAL_LABEL);
  829. e3adt->labelfont(0);
  830. e3adt->labelsize(10);
  831. e3adt->labelcolor(FL_FOREGROUND_COLOR);
  832. e3adt->maximum(127);
  833. e3adt->step(1);
  834. e3adt->callback((Fl_Callback*)cb_e3adt);
  835. e3adt->align(Fl_Align(FL_ALIGN_BOTTOM));
  836. e3adt->when(FL_WHEN_CHANGED);
  837. o->init("PA_dt");
  838. } // Fl_Osc_Dial* e3adt
  839. { Fl_Osc_Dial* o = e3dval = new Fl_Osc_Dial(75, 20, 30, 30, "D.val");
  840. e3dval->tooltip("decay value");
  841. e3dval->box(FL_ROUND_UP_BOX);
  842. e3dval->color(FL_BACKGROUND_COLOR);
  843. e3dval->selection_color(FL_INACTIVE_COLOR);
  844. e3dval->labeltype(FL_NORMAL_LABEL);
  845. e3dval->labelfont(0);
  846. e3dval->labelsize(10);
  847. e3dval->labelcolor(FL_FOREGROUND_COLOR);
  848. e3dval->maximum(127);
  849. e3dval->step(1);
  850. e3dval->callback((Fl_Callback*)cb_e3dval);
  851. e3dval->align(Fl_Align(FL_ALIGN_BOTTOM));
  852. e3dval->when(FL_WHEN_CHANGED);
  853. o->init("PD_val");
  854. } // Fl_Osc_Dial* e3dval
  855. { Fl_Osc_Dial* o = e3ddt = new Fl_Osc_Dial(110, 20, 30, 30, "D.dt");
  856. e3ddt->tooltip("decay time");
  857. e3ddt->box(FL_ROUND_UP_BOX);
  858. e3ddt->color(FL_BACKGROUND_COLOR);
  859. e3ddt->selection_color(FL_INACTIVE_COLOR);
  860. e3ddt->labeltype(FL_NORMAL_LABEL);
  861. e3ddt->labelfont(0);
  862. e3ddt->labelsize(10);
  863. e3ddt->labelcolor(FL_FOREGROUND_COLOR);
  864. e3ddt->maximum(127);
  865. e3ddt->step(1);
  866. e3ddt->callback((Fl_Callback*)cb_e3ddt);
  867. e3ddt->align(Fl_Align(FL_ALIGN_BOTTOM));
  868. e3ddt->when(FL_WHEN_CHANGED);
  869. o->init("PD_dt");
  870. } // Fl_Osc_Dial* e3ddt
  871. { Fl_Osc_Dial* o = e3rdt = new Fl_Osc_Dial(145, 20, 30, 30, "R.dt");
  872. e3rdt->tooltip("Release time");
  873. e3rdt->box(FL_ROUND_UP_BOX);
  874. e3rdt->color(FL_BACKGROUND_COLOR);
  875. e3rdt->selection_color(FL_INACTIVE_COLOR);
  876. e3rdt->labeltype(FL_NORMAL_LABEL);
  877. e3rdt->labelfont(0);
  878. e3rdt->labelsize(10);
  879. e3rdt->labelcolor(FL_FOREGROUND_COLOR);
  880. e3rdt->maximum(127);
  881. e3rdt->step(1);
  882. e3rdt->callback((Fl_Callback*)cb_e3rdt);
  883. e3rdt->align(Fl_Align(FL_ALIGN_BOTTOM));
  884. e3rdt->when(FL_WHEN_CHANGED);
  885. o->init("PR_dt");
  886. } // Fl_Osc_Dial* e3rdt
  887. { Fl_Osc_Dial* o = e3rval = new Fl_Osc_Dial(180, 20, 30, 30, "R.val");
  888. e3rval->tooltip("Release value");
  889. e3rval->box(FL_ROUND_UP_BOX);
  890. e3rval->color(FL_BACKGROUND_COLOR);
  891. e3rval->selection_color(FL_INACTIVE_COLOR);
  892. e3rval->labeltype(FL_NORMAL_LABEL);
  893. e3rval->labelfont(0);
  894. e3rval->labelsize(10);
  895. e3rval->labelcolor(FL_FOREGROUND_COLOR);
  896. e3rval->maximum(127);
  897. e3rval->step(1);
  898. e3rval->callback((Fl_Callback*)cb_e3rval);
  899. e3rval->align(Fl_Align(FL_ALIGN_BOTTOM));
  900. e3rval->when(FL_WHEN_CHANGED);
  901. o->init("PR_val");
  902. } // Fl_Osc_Dial* e3rval
  903. { Fl_Osc_Dial* o = e3envstretch = new Fl_Osc_Dial(215, 25, 25, 25, "Stretch");
  904. e3envstretch->tooltip("Envelope stretch (on lower notes makes the envelope longer)");
  905. e3envstretch->box(FL_ROUND_UP_BOX);
  906. e3envstretch->color(FL_BACKGROUND_COLOR);
  907. e3envstretch->selection_color(FL_INACTIVE_COLOR);
  908. e3envstretch->labeltype(FL_NORMAL_LABEL);
  909. e3envstretch->labelfont(0);
  910. e3envstretch->labelsize(10);
  911. e3envstretch->labelcolor(FL_FOREGROUND_COLOR);
  912. e3envstretch->maximum(127);
  913. e3envstretch->step(1);
  914. e3envstretch->align(Fl_Align(FL_ALIGN_BOTTOM));
  915. e3envstretch->when(FL_WHEN_CHANGED);
  916. o->init("Penvstretch");
  917. } // Fl_Osc_Dial* e3envstretch
  918. { Fl_Osc_Check* o = e3forcedrelease = new Fl_Osc_Check(250, 30, 15, 20, "frcR");
  919. e3forcedrelease->tooltip("Forced Release");
  920. e3forcedrelease->box(FL_NO_BOX);
  921. e3forcedrelease->down_box(FL_DOWN_BOX);
  922. e3forcedrelease->color(FL_BACKGROUND_COLOR);
  923. e3forcedrelease->selection_color(FL_FOREGROUND_COLOR);
  924. e3forcedrelease->labeltype(FL_NORMAL_LABEL);
  925. e3forcedrelease->labelfont(0);
  926. e3forcedrelease->labelsize(10);
  927. e3forcedrelease->labelcolor(FL_FOREGROUND_COLOR);
  928. e3forcedrelease->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT));
  929. e3forcedrelease->when(FL_WHEN_RELEASE);
  930. o->init("Pforcedrelease");
  931. } // Fl_Osc_Check* e3forcedrelease
  932. { Fl_Osc_Button* o = new Fl_Osc_Button(255, 5, 15, 15, "E");
  933. o->box(FL_UP_BOX);
  934. o->color(FL_BACKGROUND_COLOR);
  935. o->selection_color(FL_BACKGROUND_COLOR);
  936. o->labeltype(FL_NORMAL_LABEL);
  937. o->labelfont(1);
  938. o->labelsize(10);
  939. o->labelcolor(FL_FOREGROUND_COLOR);
  940. o->callback((Fl_Callback*)cb_E2);
  941. o->align(Fl_Align(FL_ALIGN_CENTER));
  942. o->when(FL_WHEN_RELEASE);
  943. } // Fl_Osc_Button* o
  944. set_module_parameters(o);
  945. o->end();
  946. } // Fl_Group* o
  947. envADSRfilter->end();
  948. } // Fl_Osc_Group* envADSRfilter
  949. return envADSRfilter;
  950. }
  951. Fl_Osc_Group* EnvelopeUI::make_ASRbw_window() {
  952. { Fl_Osc_Group* o = envASRbw = new Fl_Osc_Group(0, 0, 210, 70);
  953. envASRbw->box(FL_FLAT_BOX);
  954. envASRbw->color(FL_BACKGROUND_COLOR);
  955. envASRbw->selection_color(FL_BACKGROUND_COLOR);
  956. envASRbw->labeltype(FL_NO_LABEL);
  957. envASRbw->labelfont(0);
  958. envASRbw->labelsize(14);
  959. envASRbw->labelcolor(FL_FOREGROUND_COLOR);
  960. envASRbw->user_data((void*)(this));
  961. envASRbw->align(Fl_Align(FL_ALIGN_TOP));
  962. envASRbw->when(FL_WHEN_RELEASE);
  963. { Fl_Group* o = new Fl_Group(0, 0, 210, 70, "BandWidth Envelope");
  964. o->box(FL_UP_BOX);
  965. o->color(FL_CYAN);
  966. o->labeltype(FL_ENGRAVED_LABEL);
  967. o->labelsize(10);
  968. o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
  969. { Fl_Button* o = new Fl_Button(155, 5, 15, 15, "C");
  970. o->box(FL_THIN_UP_BOX);
  971. o->color((Fl_Color)179);
  972. o->labelfont(1);
  973. o->labelsize(10);
  974. o->labelcolor((Fl_Color)55);
  975. o->callback((Fl_Callback*)cb_C4);
  976. } // Fl_Button* o
  977. { Fl_Button* o = new Fl_Button(172, 5, 15, 15, "P");
  978. o->box(FL_THIN_UP_BOX);
  979. o->color((Fl_Color)179);
  980. o->labelfont(1);
  981. o->labelsize(10);
  982. o->labelcolor((Fl_Color)55);
  983. o->callback((Fl_Callback*)cb_P4);
  984. } // Fl_Button* o
  985. { Fl_Osc_Dial* o = e4aval = new Fl_Osc_Dial(5, 20, 30, 30, "A.val");
  986. e4aval->tooltip("Starting value");
  987. e4aval->box(FL_ROUND_UP_BOX);
  988. e4aval->color(FL_BACKGROUND_COLOR);
  989. e4aval->selection_color(FL_INACTIVE_COLOR);
  990. e4aval->labeltype(FL_NORMAL_LABEL);
  991. e4aval->labelfont(0);
  992. e4aval->labelsize(10);
  993. e4aval->labelcolor(FL_FOREGROUND_COLOR);
  994. e4aval->maximum(127);
  995. e4aval->step(1);
  996. e4aval->callback((Fl_Callback*)cb_e4aval);
  997. e4aval->align(Fl_Align(FL_ALIGN_BOTTOM));
  998. e4aval->when(FL_WHEN_CHANGED);
  999. o->init("PA_val");
  1000. } // Fl_Osc_Dial* e4aval
  1001. { Fl_Osc_Dial* o = e4adt = new Fl_Osc_Dial(40, 20, 30, 30, "A.dt");
  1002. e4adt->tooltip("Attack time");
  1003. e4adt->box(FL_ROUND_UP_BOX);
  1004. e4adt->color(FL_BACKGROUND_COLOR);
  1005. e4adt->selection_color(FL_INACTIVE_COLOR);
  1006. e4adt->labeltype(FL_NORMAL_LABEL);
  1007. e4adt->labelfont(0);
  1008. e4adt->labelsize(10);
  1009. e4adt->labelcolor(FL_FOREGROUND_COLOR);
  1010. e4adt->maximum(127);
  1011. e4adt->step(1);
  1012. e4adt->callback((Fl_Callback*)cb_e4adt);
  1013. e4adt->align(Fl_Align(FL_ALIGN_BOTTOM));
  1014. e4adt->when(FL_WHEN_CHANGED);
  1015. o->init("PA_dt");
  1016. } // Fl_Osc_Dial* e4adt
  1017. { Fl_Osc_Dial* o = e4rval = new Fl_Osc_Dial(110, 20, 30, 30, "R.val");
  1018. e4rval->tooltip("Release value");
  1019. e4rval->box(FL_ROUND_UP_BOX);
  1020. e4rval->color(FL_BACKGROUND_COLOR);
  1021. e4rval->selection_color(FL_INACTIVE_COLOR);
  1022. e4rval->labeltype(FL_NORMAL_LABEL);
  1023. e4rval->labelfont(0);
  1024. e4rval->labelsize(10);
  1025. e4rval->labelcolor(FL_FOREGROUND_COLOR);
  1026. e4rval->maximum(127);
  1027. e4rval->step(1);
  1028. e4rval->callback((Fl_Callback*)cb_e4rval);
  1029. e4rval->align(Fl_Align(FL_ALIGN_BOTTOM));
  1030. e4rval->when(FL_WHEN_CHANGED);
  1031. o->init("PR_val");
  1032. } // Fl_Osc_Dial* e4rval
  1033. { Fl_Osc_Dial* o = e4rdt = new Fl_Osc_Dial(75, 20, 30, 30, "R.dt");
  1034. e4rdt->tooltip("Release time");
  1035. e4rdt->box(FL_ROUND_UP_BOX);
  1036. e4rdt->color(FL_BACKGROUND_COLOR);
  1037. e4rdt->selection_color(FL_INACTIVE_COLOR);
  1038. e4rdt->labeltype(FL_NORMAL_LABEL);
  1039. e4rdt->labelfont(0);
  1040. e4rdt->labelsize(10);
  1041. e4rdt->labelcolor(FL_FOREGROUND_COLOR);
  1042. e4rdt->maximum(127);
  1043. e4rdt->step(1);
  1044. e4rdt->callback((Fl_Callback*)cb_e4rdt);
  1045. e4rdt->align(Fl_Align(FL_ALIGN_BOTTOM));
  1046. e4rdt->when(FL_WHEN_CHANGED);
  1047. o->init("PR_dt");
  1048. } // Fl_Osc_Dial* e4rdt
  1049. { Fl_Osc_Dial* o = e4envstretch = new Fl_Osc_Dial(145, 25, 25, 25, "Stretch");
  1050. e4envstretch->tooltip("Envelope stretch (on lower notes makes the envelope longer)");
  1051. e4envstretch->box(FL_ROUND_UP_BOX);
  1052. e4envstretch->color(FL_BACKGROUND_COLOR);
  1053. e4envstretch->selection_color(FL_INACTIVE_COLOR);
  1054. e4envstretch->labeltype(FL_NORMAL_LABEL);
  1055. e4envstretch->labelfont(0);
  1056. e4envstretch->labelsize(10);
  1057. e4envstretch->labelcolor(FL_FOREGROUND_COLOR);
  1058. e4envstretch->maximum(127);
  1059. e4envstretch->step(1);
  1060. e4envstretch->align(Fl_Align(FL_ALIGN_BOTTOM));
  1061. e4envstretch->when(FL_WHEN_CHANGED);
  1062. o->init("Penvstretch");
  1063. } // Fl_Osc_Dial* e4envstretch
  1064. { Fl_Osc_Check* o = e4forcedrelease = new Fl_Osc_Check(180, 25, 15, 25, "frcR");
  1065. e4forcedrelease->tooltip("Forced release");
  1066. e4forcedrelease->box(FL_NO_BOX);
  1067. e4forcedrelease->down_box(FL_DOWN_BOX);
  1068. e4forcedrelease->color(FL_BACKGROUND_COLOR);
  1069. e4forcedrelease->selection_color(FL_FOREGROUND_COLOR);
  1070. e4forcedrelease->labeltype(FL_NORMAL_LABEL);
  1071. e4forcedrelease->labelfont(0);
  1072. e4forcedrelease->labelsize(10);
  1073. e4forcedrelease->labelcolor(FL_FOREGROUND_COLOR);
  1074. e4forcedrelease->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT));
  1075. e4forcedrelease->when(FL_WHEN_RELEASE);
  1076. o->init("Pforcedrelease");
  1077. } // Fl_Osc_Check* e4forcedrelease
  1078. set_module_parameters(o);
  1079. o->end();
  1080. } // Fl_Group* o
  1081. { Fl_Osc_Button* o = new Fl_Osc_Button(190, 5, 15, 15, "E");
  1082. o->box(FL_UP_BOX);
  1083. o->color(FL_BACKGROUND_COLOR);
  1084. o->selection_color(FL_BACKGROUND_COLOR);
  1085. o->labeltype(FL_NORMAL_LABEL);
  1086. o->labelfont(1);
  1087. o->labelsize(10);
  1088. o->labelcolor(FL_FOREGROUND_COLOR);
  1089. o->callback((Fl_Callback*)cb_E3);
  1090. o->align(Fl_Align(FL_ALIGN_CENTER));
  1091. o->when(FL_WHEN_RELEASE);
  1092. } // Fl_Osc_Button* o
  1093. set_module_parameters(o);
  1094. envASRbw->end();
  1095. } // Fl_Osc_Group* envASRbw
  1096. return envASRbw;
  1097. }
  1098. Fl_Osc_Group* EnvelopeUI::make_free_window() {
  1099. { Fl_Osc_Group* o = envfree = new Fl_Osc_Group(0, 0, 205, 70);
  1100. envfree->box(FL_FLAT_BOX);
  1101. envfree->color(FL_LIGHT1);
  1102. envfree->selection_color(FL_BACKGROUND_COLOR);
  1103. envfree->labeltype(FL_NO_LABEL);
  1104. envfree->labelfont(1);
  1105. envfree->labelsize(14);
  1106. envfree->labelcolor(FL_FOREGROUND_COLOR);
  1107. envfree->user_data((void*)(this));
  1108. envfree->align(Fl_Align(FL_ALIGN_TOP));
  1109. envfree->when(FL_WHEN_RELEASE);
  1110. { Fl_Group* o = envfreegroup = new Fl_Group(0, 0, 205, 70, "Amplitude Envelope");
  1111. envfreegroup->box(FL_UP_BOX);
  1112. envfreegroup->color(FL_CYAN);
  1113. envfreegroup->labeltype(FL_ENGRAVED_LABEL);
  1114. envfreegroup->labelsize(10);
  1115. envfreegroup->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
  1116. { Fl_Osc_Button* o = new Fl_Osc_Button(185, 5, 15, 15, "E");
  1117. o->box(FL_UP_BOX);
  1118. o->color(FL_BACKGROUND_COLOR);
  1119. o->selection_color(FL_BACKGROUND_COLOR);
  1120. o->labeltype(FL_NORMAL_LABEL);
  1121. o->labelfont(1);
  1122. o->labelsize(10);
  1123. o->labelcolor(FL_FOREGROUND_COLOR);
  1124. o->callback((Fl_Callback*)cb_E4);
  1125. o->align(Fl_Align(FL_ALIGN_CENTER));
  1126. o->when(FL_WHEN_RELEASE);
  1127. } // Fl_Osc_Button* o
  1128. { EnvelopeFreeEdit* o = freeeditsmall = new EnvelopeFreeEdit(5, 20, 195, 45, "Envelope");
  1129. freeeditsmall->box(FL_FLAT_BOX);
  1130. freeeditsmall->color(FL_FOREGROUND_COLOR);
  1131. freeeditsmall->selection_color(FL_BACKGROUND_COLOR);
  1132. freeeditsmall->labeltype(FL_NORMAL_LABEL);
  1133. freeeditsmall->labelfont(0);
  1134. freeeditsmall->labelsize(14);
  1135. freeeditsmall->labelcolor(FL_FOREGROUND_COLOR);
  1136. freeeditsmall->callback((Fl_Callback*)cb_freeeditsmall);
  1137. freeeditsmall->align(Fl_Align(FL_ALIGN_CENTER));
  1138. freeeditsmall->when(FL_WHEN_RELEASE);
  1139. Fl_Group::current()->resizable(freeeditsmall);
  1140. o->init();
  1141. } // EnvelopeFreeEdit* freeeditsmall
  1142. { Fl_Button* o = new Fl_Button(150, 5, 15, 15, "C");
  1143. o->box(FL_THIN_UP_BOX);
  1144. o->color((Fl_Color)179);
  1145. o->labelfont(1);
  1146. o->labelsize(10);
  1147. o->labelcolor((Fl_Color)55);
  1148. o->callback((Fl_Callback*)cb_C5);
  1149. } // Fl_Button* o
  1150. { Fl_Button* o = new Fl_Button(167, 5, 15, 15, "P");
  1151. o->box(FL_THIN_UP_BOX);
  1152. o->color((Fl_Color)179);
  1153. o->labelfont(1);
  1154. o->labelsize(10);
  1155. o->labelcolor((Fl_Color)55);
  1156. o->callback((Fl_Callback*)cb_P5);
  1157. } // Fl_Button* o
  1158. set_module_parameters(o);
  1159. envfreegroup->end();
  1160. Fl_Group::current()->resizable(envfreegroup);
  1161. } // Fl_Group* envfreegroup
  1162. set_module_parameters(o);
  1163. envfree->end();
  1164. } // Fl_Osc_Group* envfree
  1165. return envfree;
  1166. }
  1167. void EnvelopeUI::open_as_freemode() {
  1168. if (!freemodehack->value() &&
  1169. fl_choice("Convert envelope to free mode data?","No","Yes",NULL)==0)
  1170. return;
  1171. freemodehack->oscWrite("Pfreemode", "T");
  1172. freeedit->update();
  1173. freemodeeditwindow->show();
  1174. freemodeeditwindow->position(Fl::event_x_root()-20, Fl::event_y_root()+20);
  1175. freemodeeditwindow->size_range(400,160);
  1176. }
  1177. void EnvelopeUI::init(int env_type, Fl_Osc_Interface *osc_, std::string base_, std::string ext_) {
  1178. osc = osc_;
  1179. base = base_;
  1180. ext = ext_;
  1181. Envmode = env_type;
  1182. Penvsustain = false;
  1183. Penvpoints = 3;
  1184. Penvstretch = 0;
  1185. Pforcedrelease = 0;
  1186. Plinearenvelope = 0;
  1187. assert(osc);
  1188. make_ADSR_window();
  1189. make_ASR_window();
  1190. make_ADSRfilter_window();
  1191. make_ASRbw_window();
  1192. make_free_window();
  1193. make_freemode_edit_window();
  1194. envwindow=NULL;
  1195. if(Envmode==3) envfreegroup->label("Frequency Envelope");
  1196. if(Envmode==4) envfreegroup->label("Filter Envelope");
  1197. if(Envmode==5) envfreegroup->label("Bandwidth Envelope");
  1198. freemodeeditwindow->label(this->label());
  1199. freeeditsmall->setpair(freeedit);
  1200. freeedit->setpair(freeeditsmall);
  1201. refresh_display();
  1202. }
  1203. void EnvelopeUI::rebase(std::string new_base) {
  1204. Fl_Osc_Group::rebase(new_base);
  1205. freemodeeditwindow->rebase(new_base+ext);
  1206. }
  1207. void EnvelopeUI::disable_freemode() {
  1208. if (fl_choice("Discard free mode data?","No","Yes",NULL)==0)
  1209. return;
  1210. hide();
  1211. int winx = Fl::event_x_root()-10;
  1212. int winy = Fl::event_y_root()-155;
  1213. winx = winx < 1 ? 1 : winx;
  1214. winy = winy < 1 ? 1 : winy;
  1215. freemodeeditwindow->hide();
  1216. envwindow->hide();
  1217. Fl_Group *par=envwindow->parent();
  1218. par->hide();
  1219. freemodehack->oscWrite("Pfreemode", "F");
  1220. freeedit->update();
  1221. envwindow->show();
  1222. par->redraw();
  1223. par->show();
  1224. show();
  1225. freemodeeditwindow->position(winx,winy);
  1226. }
  1227. void EnvelopeUI::refresh() {
  1228. freemodehack->oscWrite("Pfreemode");
  1229. }
  1230. void EnvelopeUI::refresh_display() {
  1231. sustaincounter->value(Penvsustain);
  1232. sustaincounter->maximum(Penvpoints-2);
  1233. envstretchdial->value(Penvstretch);
  1234. if (Envmode > 2)
  1235. linearenvelopecheck->hide();
  1236. else {
  1237. linearenvelopecheck->value(Plinearenvelope);
  1238. linearenvelopecheck->show();
  1239. }
  1240. forcedreleasecheck->value(Pforcedrelease);
  1241. envADSR->hide();
  1242. envASR->hide();
  1243. envADSRfilter->hide();
  1244. envASRbw->hide();
  1245. envfree->hide();
  1246. if (freemodehack->value()) {
  1247. envwindow=envfree;
  1248. freeedit->update();
  1249. } else {
  1250. freemodeeditwindow->hide();
  1251. switch(Envmode){
  1252. case 1:
  1253. case 2:
  1254. envwindow=envADSR;
  1255. break;
  1256. case 3:
  1257. envwindow=envASR;
  1258. break;
  1259. case 4:
  1260. envwindow=envADSRfilter;
  1261. break;
  1262. case 5:
  1263. envwindow=envASRbw;
  1264. break;
  1265. default:
  1266. break;
  1267. }
  1268. }
  1269. assert(envwindow);
  1270. envwindow->resize(this->x(),this->y(),this->w(),this->h());
  1271. envwindow->show();
  1272. }