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.

2025 lines
75KB

  1. // generated by Fast Light User Interface Designer (fluid) version 1.0300
  2. #include "external/zynaddsubfx/UI/PartUI.h"
  3. //Copyright (c) 2002-2005 Nasca Octavian Paul
  4. //License: GNU GPL version 2 or later
  5. Fl_Group* PartSysEffSend::make_window() {
  6. { syseffsend = new Fl_Group(0, 0, 100, 100);
  7. syseffsend->box(FL_NO_BOX);
  8. syseffsend->color(FL_BACKGROUND_COLOR);
  9. syseffsend->selection_color(FL_BACKGROUND_COLOR);
  10. syseffsend->labeltype(FL_NO_LABEL);
  11. syseffsend->labelfont(0);
  12. syseffsend->labelsize(14);
  13. syseffsend->labelcolor(FL_FOREGROUND_COLOR);
  14. syseffsend->user_data((void*)(this));
  15. syseffsend->align(Fl_Align(FL_ALIGN_TOP));
  16. syseffsend->when(FL_WHEN_RELEASE);
  17. { Fl_Osc_Dial* o = widget = new Fl_Osc_Dial(0, 0, 25, 25, "01");
  18. widget->box(FL_ROUND_UP_BOX);
  19. widget->color(FL_BACKGROUND_COLOR);
  20. widget->selection_color(FL_INACTIVE_COLOR);
  21. widget->labeltype(FL_NORMAL_LABEL);
  22. widget->labelfont(1);
  23. widget->labelsize(10);
  24. widget->labelcolor(FL_FOREGROUND_COLOR);
  25. widget->maximum(127);
  26. widget->step(1);
  27. widget->align(Fl_Align(130));
  28. widget->when(FL_WHEN_CHANGED);
  29. o->size(25,25);
  30. o->alt_init("/","Psysefxvol"+to_s(neff)+"/part"+to_s(npart));
  31. o->mark_dead();
  32. char tmp[10];snprintf(tmp,10,"%d",neff+1);o->copy_label(tmp);
  33. } // Fl_Osc_Dial* widget
  34. syseffsend->end();
  35. } // Fl_Group* syseffsend
  36. return syseffsend;
  37. }
  38. PartSysEffSend::PartSysEffSend(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,label) {
  39. neff=0;
  40. npart=0;
  41. }
  42. void PartSysEffSend::init(int npart_,int neff_) {
  43. npart=npart_;
  44. neff=neff_;
  45. make_window();
  46. syseffsend->show();
  47. end();
  48. }
  49. void PartSysEffSend::rebase(int part) {
  50. auto *osc = widget->osc;
  51. std::string old = "Psysefxvol"+to_s(neff)+"/part"+to_s(npart);
  52. std::string next = "Psysefxvol"+to_s(neff)+"/part"+to_s(part);
  53. widget->ext = next;
  54. osc->renameLink("/"+old, "/"+next, widget);
  55. osc->requestValue("/"+next);
  56. npart = part;
  57. }
  58. PartSysEffSend::~PartSysEffSend() {
  59. syseffsend->hide();
  60. //delete(syseffsend);
  61. }
  62. void PartKitItem::cb_m_i(Fl_Osc_Button* o, void*) {
  63. o->oscWrite("captureMin");
  64. minkcounter->update();
  65. maxkcounter->update();
  66. }
  67. void PartKitItem::cb_m(Fl_Osc_Button* o, void* v) {
  68. ((PartKitItem*)(o->parent()->parent()->user_data()))->cb_m_i(o,v);
  69. }
  70. void PartKitItem::cb_M_i(Fl_Osc_Button* o, void*) {
  71. o->oscWrite("captureMax");
  72. minkcounter->update();
  73. maxkcounter->update();
  74. }
  75. void PartKitItem::cb_M(Fl_Osc_Button* o, void* v) {
  76. ((PartKitItem*)(o->parent()->parent()->user_data()))->cb_M_i(o,v);
  77. }
  78. void PartKitItem::cb_R_i(Fl_Button*, void*) {
  79. minkcounter->value(0);
  80. minkcounter->do_callback();
  81. maxkcounter->value(127);
  82. maxkcounter->do_callback();
  83. }
  84. void PartKitItem::cb_R(Fl_Button* o, void* v) {
  85. ((PartKitItem*)(o->parent()->parent()->user_data()))->cb_R_i(o,v);
  86. }
  87. void PartKitItem::cb_adeditbutton_i(Fl_Button*, void*) {
  88. if (Fl::event_shift())
  89. partui->showvoiceparams(n, true);
  90. else if (Fl::event_ctrl())
  91. partui->showvoiceparams(n, false);
  92. else
  93. partui->showparameters(n,0);
  94. }
  95. void PartKitItem::cb_adeditbutton(Fl_Button* o, void* v) {
  96. ((PartKitItem*)(o->parent()->parent()->user_data()))->cb_adeditbutton_i(o,v);
  97. }
  98. void PartKitItem::cb_subeditbutton_i(Fl_Button*, void*) {
  99. partui->showparameters(n,1);
  100. }
  101. void PartKitItem::cb_subeditbutton(Fl_Button* o, void* v) {
  102. ((PartKitItem*)(o->parent()->parent()->user_data()))->cb_subeditbutton_i(o,v);
  103. }
  104. void PartKitItem::cb_labelbutton_i(Fl_Osc_Input* o, void*) {
  105. o->oscWrite(o->ext, "s", o->value());
  106. }
  107. void PartKitItem::cb_labelbutton(Fl_Osc_Input* o, void* v) {
  108. ((PartKitItem*)(o->parent()->parent()->user_data()))->cb_labelbutton_i(o,v);
  109. }
  110. void PartKitItem::cb_adcheck_i(Fl_Osc_Check* o, void*) {
  111. if (o->value()!=0) adeditbutton->activate();
  112. else adeditbutton->deactivate();
  113. }
  114. void PartKitItem::cb_adcheck(Fl_Osc_Check* o, void* v) {
  115. ((PartKitItem*)(o->parent()->parent()->user_data()))->cb_adcheck_i(o,v);
  116. }
  117. void PartKitItem::cb_subcheck_i(Fl_Osc_Check* o, void*) {
  118. if(o->value()!=0) subeditbutton->activate();
  119. else subeditbutton->deactivate();
  120. }
  121. void PartKitItem::cb_subcheck(Fl_Osc_Check* o, void* v) {
  122. ((PartKitItem*)(o->parent()->parent()->user_data()))->cb_subcheck_i(o,v);
  123. }
  124. void PartKitItem::cb_padeditbutton_i(Fl_Button*, void*) {
  125. partui->showparameters(n,2);
  126. }
  127. void PartKitItem::cb_padeditbutton(Fl_Button* o, void* v) {
  128. ((PartKitItem*)(o->parent()->parent()->user_data()))->cb_padeditbutton_i(o,v);
  129. }
  130. void PartKitItem::cb_padcheck_i(Fl_Osc_Check* o, void*) {
  131. if (o->value()!=0) padeditbutton->activate();
  132. else padeditbutton->deactivate();
  133. }
  134. void PartKitItem::cb_padcheck(Fl_Osc_Check* o, void* v) {
  135. ((PartKitItem*)(o->parent()->parent()->user_data()))->cb_padcheck_i(o,v);
  136. }
  137. void PartKitItem::cb_enabledcheck_i(Fl_Osc_Check* o, void*) {
  138. int answer=1;
  139. //TODO special case
  140. if (o->value()==0 && !o->is_osc)
  141. answer=fl_choice("Delete the item?","No","Yes",NULL);
  142. if(!answer)
  143. o->value(true);
  144. if (o->value()==0) partkititemgroup->deactivate();
  145. else partkititemgroup->activate();
  146. o->redraw();
  147. partui->showparameters(n,-1);//use to delete the ui, if it is not to item 0;
  148. }
  149. void PartKitItem::cb_enabledcheck(Fl_Osc_Check* o, void* v) {
  150. ((PartKitItem*)(o->parent()->user_data()))->cb_enabledcheck_i(o,v);
  151. }
  152. Fl_Osc_Group* PartKitItem::make_window() {
  153. { partkititem = new Fl_Osc_Group(0, 0, 670, 100);
  154. partkititem->box(FL_NO_BOX);
  155. partkititem->color(FL_BACKGROUND_COLOR);
  156. partkititem->selection_color(FL_BACKGROUND_COLOR);
  157. partkititem->labeltype(FL_NO_LABEL);
  158. partkititem->labelfont(0);
  159. partkititem->labelsize(14);
  160. partkititem->labelcolor(FL_FOREGROUND_COLOR);
  161. partkititem->user_data((void*)(this));
  162. partkititem->align(Fl_Align(FL_ALIGN_TOP));
  163. partkititem->when(FL_WHEN_RELEASE);
  164. { partkititemgroup = new Fl_Osc_Group(55, 0, 605, 20);
  165. partkititemgroup->box(FL_NO_BOX);
  166. partkititemgroup->color(FL_BACKGROUND_COLOR);
  167. partkititemgroup->selection_color(FL_BACKGROUND_COLOR);
  168. partkititemgroup->labeltype(FL_NORMAL_LABEL);
  169. partkititemgroup->labelfont(0);
  170. partkititemgroup->labelsize(14);
  171. partkititemgroup->labelcolor(FL_FOREGROUND_COLOR);
  172. partkititemgroup->align(Fl_Align(FL_ALIGN_TOP));
  173. partkititemgroup->when(FL_WHEN_RELEASE);
  174. { Fl_Osc_Counter* o = minkcounter = new Fl_Osc_Counter(225, 0, 55, 15);
  175. minkcounter->type(1);
  176. minkcounter->box(FL_UP_BOX);
  177. minkcounter->color(FL_BACKGROUND_COLOR);
  178. minkcounter->selection_color(FL_INACTIVE_COLOR);
  179. minkcounter->labeltype(FL_NORMAL_LABEL);
  180. minkcounter->labelfont(0);
  181. minkcounter->labelsize(14);
  182. minkcounter->labelcolor(FL_FOREGROUND_COLOR);
  183. minkcounter->minimum(0);
  184. minkcounter->maximum(128);
  185. minkcounter->step(1);
  186. minkcounter->align(Fl_Align(FL_ALIGN_BOTTOM));
  187. minkcounter->when(FL_WHEN_CHANGED);
  188. o->init("Pminkey");
  189. } // Fl_Osc_Counter* minkcounter
  190. { Fl_Osc_Button* o = new Fl_Osc_Button(285, 3, 15, 12, "m");
  191. o->tooltip("set the minimum key to the last pressed key");
  192. o->box(FL_THIN_UP_BOX);
  193. o->color(FL_BACKGROUND_COLOR);
  194. o->selection_color(FL_BACKGROUND_COLOR);
  195. o->labeltype(FL_NORMAL_LABEL);
  196. o->labelfont(0);
  197. o->labelsize(10);
  198. o->labelcolor(FL_FOREGROUND_COLOR);
  199. o->callback((Fl_Callback*)cb_m);
  200. o->align(Fl_Align(FL_ALIGN_CENTER));
  201. o->when(FL_WHEN_RELEASE);
  202. } // Fl_Osc_Button* o
  203. { Fl_Osc_Button* o = new Fl_Osc_Button(315, 3, 15, 12, "M");
  204. o->tooltip("set the maximum key to the last pressed key");
  205. o->box(FL_THIN_UP_BOX);
  206. o->color(FL_BACKGROUND_COLOR);
  207. o->selection_color(FL_BACKGROUND_COLOR);
  208. o->labeltype(FL_NORMAL_LABEL);
  209. o->labelfont(0);
  210. o->labelsize(10);
  211. o->labelcolor(FL_FOREGROUND_COLOR);
  212. o->callback((Fl_Callback*)cb_M);
  213. o->align(Fl_Align(FL_ALIGN_CENTER));
  214. o->when(FL_WHEN_RELEASE);
  215. } // Fl_Osc_Button* o
  216. { Fl_Button* o = new Fl_Button(300, 3, 15, 12, "R");
  217. o->tooltip("reset the minimum key to 0 and maximum key to 127");
  218. o->box(FL_THIN_UP_BOX);
  219. o->labelfont(1);
  220. o->labelsize(10);
  221. o->callback((Fl_Callback*)cb_R);
  222. } // Fl_Button* o
  223. { adeditbutton = new Fl_Button(420, 0, 40, 15, "edit");
  224. adeditbutton->box(FL_THIN_UP_BOX);
  225. adeditbutton->labelsize(11);
  226. adeditbutton->callback((Fl_Callback*)cb_adeditbutton);
  227. } // Fl_Button* adeditbutton
  228. { subeditbutton = new Fl_Button(490, 0, 40, 15, "edit");
  229. subeditbutton->box(FL_THIN_UP_BOX);
  230. subeditbutton->labelsize(11);
  231. subeditbutton->callback((Fl_Callback*)cb_subeditbutton);
  232. } // Fl_Button* subeditbutton
  233. { Fl_Osc_Check* o = mutedcheck = new Fl_Osc_Check(60, 0, 20, 15);
  234. mutedcheck->box(FL_NO_BOX);
  235. mutedcheck->down_box(FL_DOWN_BOX);
  236. mutedcheck->color(FL_BACKGROUND_COLOR);
  237. mutedcheck->selection_color(FL_FOREGROUND_COLOR);
  238. mutedcheck->labeltype(FL_NORMAL_LABEL);
  239. mutedcheck->labelfont(1);
  240. mutedcheck->labelsize(11);
  241. mutedcheck->labelcolor(FL_FOREGROUND_COLOR);
  242. mutedcheck->align(Fl_Align(FL_ALIGN_LEFT));
  243. mutedcheck->when(FL_WHEN_RELEASE);
  244. o->init("Pmuted");
  245. } // Fl_Osc_Check* mutedcheck
  246. { Fl_Osc_Counter* o = maxkcounter = new Fl_Osc_Counter(335, 0, 55, 15);
  247. maxkcounter->type(1);
  248. maxkcounter->box(FL_UP_BOX);
  249. maxkcounter->color(FL_BACKGROUND_COLOR);
  250. maxkcounter->selection_color(FL_INACTIVE_COLOR);
  251. maxkcounter->labeltype(FL_NORMAL_LABEL);
  252. maxkcounter->labelfont(0);
  253. maxkcounter->labelsize(14);
  254. maxkcounter->labelcolor(FL_FOREGROUND_COLOR);
  255. maxkcounter->minimum(0);
  256. maxkcounter->maximum(128);
  257. maxkcounter->step(1);
  258. maxkcounter->align(Fl_Align(FL_ALIGN_BOTTOM));
  259. maxkcounter->when(FL_WHEN_CHANGED);
  260. o->init("Pmaxkey");
  261. } // Fl_Osc_Counter* maxkcounter
  262. { Fl_Osc_Input* o = labelbutton = new Fl_Osc_Input(90, 0, 130, 15, "Bass Drum");
  263. labelbutton->box(FL_THIN_DOWN_BOX);
  264. labelbutton->color(FL_BACKGROUND2_COLOR);
  265. labelbutton->selection_color(FL_SELECTION_COLOR);
  266. labelbutton->labeltype(FL_NORMAL_LABEL);
  267. labelbutton->labelfont(1);
  268. labelbutton->labelsize(10);
  269. labelbutton->labelcolor(FL_FOREGROUND_COLOR);
  270. labelbutton->callback((Fl_Callback*)cb_labelbutton);
  271. labelbutton->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  272. labelbutton->when(FL_WHEN_RELEASE);
  273. o->init("Pname");
  274. } // Fl_Osc_Input* labelbutton
  275. { Fl_Osc_Check* o = adcheck = new Fl_Osc_Check(400, 0, 20, 15);
  276. adcheck->box(FL_NO_BOX);
  277. adcheck->down_box(FL_DOWN_BOX);
  278. adcheck->color(FL_BACKGROUND_COLOR);
  279. adcheck->selection_color(FL_FOREGROUND_COLOR);
  280. adcheck->labeltype(FL_NORMAL_LABEL);
  281. adcheck->labelfont(1);
  282. adcheck->labelsize(11);
  283. adcheck->labelcolor(FL_FOREGROUND_COLOR);
  284. adcheck->callback((Fl_Callback*)cb_adcheck);
  285. adcheck->align(Fl_Align(FL_ALIGN_LEFT));
  286. adcheck->when(FL_WHEN_RELEASE);
  287. o->init("Padenabled");
  288. } // Fl_Osc_Check* adcheck
  289. { Fl_Osc_Check* o = subcheck = new Fl_Osc_Check(470, 0, 20, 15);
  290. subcheck->box(FL_NO_BOX);
  291. subcheck->down_box(FL_DOWN_BOX);
  292. subcheck->color(FL_BACKGROUND_COLOR);
  293. subcheck->selection_color(FL_FOREGROUND_COLOR);
  294. subcheck->labeltype(FL_NORMAL_LABEL);
  295. subcheck->labelfont(1);
  296. subcheck->labelsize(11);
  297. subcheck->labelcolor(FL_FOREGROUND_COLOR);
  298. subcheck->callback((Fl_Callback*)cb_subcheck);
  299. subcheck->align(Fl_Align(FL_ALIGN_LEFT));
  300. subcheck->when(FL_WHEN_RELEASE);
  301. o->init("Psubenabled");
  302. } // Fl_Osc_Check* subcheck
  303. { Fl_Osc_Choice* o = sendtoeffect = new Fl_Osc_Choice(615, 0, 45, 15);
  304. sendtoeffect->box(FL_UP_BOX);
  305. sendtoeffect->down_box(FL_BORDER_BOX);
  306. sendtoeffect->color(FL_BACKGROUND_COLOR);
  307. sendtoeffect->selection_color(FL_SELECTION_COLOR);
  308. sendtoeffect->labeltype(FL_NORMAL_LABEL);
  309. sendtoeffect->labelfont(0);
  310. sendtoeffect->labelsize(10);
  311. sendtoeffect->labelcolor(FL_FOREGROUND_COLOR);
  312. sendtoeffect->textfont(1);
  313. sendtoeffect->textsize(10);
  314. sendtoeffect->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  315. sendtoeffect->when(FL_WHEN_RELEASE);
  316. char nrstr[10]; for(int i=0;i<NUM_PART_EFX;i++){sprintf(nrstr,"FX%d",i+1);o->add(nrstr);};o->add("OFF");
  317. o->init("Psendtoparteffect");//TODO check semantics
  318. } // Fl_Osc_Choice* sendtoeffect
  319. { padeditbutton = new Fl_Button(560, 0, 40, 15, "edit");
  320. padeditbutton->box(FL_THIN_UP_BOX);
  321. padeditbutton->labelsize(11);
  322. padeditbutton->callback((Fl_Callback*)cb_padeditbutton);
  323. } // Fl_Button* padeditbutton
  324. { Fl_Osc_Check* o = padcheck = new Fl_Osc_Check(540, 0, 20, 15);
  325. padcheck->box(FL_NO_BOX);
  326. padcheck->down_box(FL_DOWN_BOX);
  327. padcheck->color(FL_BACKGROUND_COLOR);
  328. padcheck->selection_color(FL_FOREGROUND_COLOR);
  329. padcheck->labeltype(FL_NORMAL_LABEL);
  330. padcheck->labelfont(1);
  331. padcheck->labelsize(11);
  332. padcheck->labelcolor(FL_FOREGROUND_COLOR);
  333. padcheck->callback((Fl_Callback*)cb_padcheck);
  334. padcheck->align(Fl_Align(FL_ALIGN_LEFT));
  335. padcheck->when(FL_WHEN_RELEASE);
  336. o->init("Ppadenabled");
  337. } // Fl_Osc_Check* padcheck
  338. partkititemgroup->end();
  339. } // Fl_Osc_Group* partkititemgroup
  340. { Fl_Osc_Check* o = enabledcheck = new Fl_Osc_Check(30, 0, 20, 15, "01");
  341. enabledcheck->box(FL_NO_BOX);
  342. enabledcheck->down_box(FL_DOWN_BOX);
  343. enabledcheck->color(FL_BACKGROUND_COLOR);
  344. enabledcheck->selection_color(FL_FOREGROUND_COLOR);
  345. enabledcheck->labeltype(FL_EMBOSSED_LABEL);
  346. enabledcheck->labelfont(1);
  347. enabledcheck->labelsize(13);
  348. enabledcheck->labelcolor(FL_FOREGROUND_COLOR);
  349. enabledcheck->callback((Fl_Callback*)cb_enabledcheck);
  350. enabledcheck->align(Fl_Align(FL_ALIGN_LEFT));
  351. enabledcheck->when(FL_WHEN_RELEASE);
  352. snprintf(label,10,"%d",n+1);o->label(label);
  353. o->init("Penabled");
  354. if (n==0) o->deactivate();
  355. } // Fl_Osc_Check* enabledcheck
  356. partkititem->end();
  357. } // Fl_Osc_Group* partkititem
  358. return partkititem;
  359. }
  360. PartKitItem::PartKitItem(int x,int y, int w, int h, const char *label):Fl_Osc_Group(x,y,w,h,label) {
  361. n=0;
  362. }
  363. void PartKitItem::refresh() {
  364. this->redraw();
  365. }
  366. void PartKitItem::init(int n_,class PartUI *partui_) {
  367. n=n_;
  368. ext = "kit"+to_s(n)+"/";
  369. partui=partui_;
  370. make_window();
  371. if (n == 0)
  372. mutedcheck->deactivate();
  373. else
  374. deactivate();
  375. //partkititem->show();
  376. end();
  377. }
  378. PartKitItem::~PartKitItem() {
  379. }
  380. void PartUI::cb_Grand_i(PartNameButton* o, void*) {
  381. int event=Fl::event_button();
  382. if (event==FL_RIGHT_MOUSE){
  383. const char *tmp=fl_input("Instrument name:",o->label());
  384. if (tmp!=NULL)
  385. o->oscWrite("Pname", "s", tmp);
  386. } else {
  387. if (event==FL_LEFT_MOUSE) bankui->show();
  388. else instrumenteditwindow->show();
  389. };
  390. }
  391. void PartUI::cb_Grand(PartNameButton* o, void* v) {
  392. ((PartUI*)(o->parent()->parent()->user_data()))->cb_Grand_i(o,v);
  393. }
  394. void PartUI::cb_minkcounter_i(Fl_Osc_Counter* o, void*) {
  395. if (minkcounter->value() > maxkcounter->value()) o->textcolor(FL_RED);
  396. else o->textcolor(FL_BLACK);
  397. }
  398. void PartUI::cb_minkcounter(Fl_Osc_Counter* o, void* v) {
  399. ((PartUI*)(o->parent()->parent()->user_data()))->cb_minkcounter_i(o,v);
  400. }
  401. void PartUI::cb_maxkcounter_i(Fl_Osc_Counter* o, void*) {
  402. if (minkcounter->value() > maxkcounter->value()) o->textcolor(FL_RED);
  403. else o->textcolor(FL_BLACK);
  404. }
  405. void PartUI::cb_maxkcounter(Fl_Osc_Counter* o, void* v) {
  406. ((PartUI*)(o->parent()->parent()->user_data()))->cb_maxkcounter_i(o,v);
  407. }
  408. void PartUI::cb_Controllers_i(Fl_Button*, void*) {
  409. ctlwindow->show();
  410. }
  411. void PartUI::cb_Controllers(Fl_Button* o, void* v) {
  412. ((PartUI*)(o->parent()->parent()->user_data()))->cb_Controllers_i(o,v);
  413. }
  414. void PartUI::cb_Edit_i(Fl_Button*, void*) {
  415. if (Fl::event_shift() || Fl::event_ctrl())
  416. instrumentkitlist->show();
  417. else
  418. instrumenteditwindow->show();
  419. }
  420. void PartUI::cb_Edit(Fl_Button* o, void* v) {
  421. ((PartUI*)(o->parent()->parent()->user_data()))->cb_Edit_i(o,v);
  422. }
  423. void PartUI::cb_m1_i(Fl_Osc_Button* o, void*) {
  424. o->oscWrite("captureMin");
  425. o->oscWrite("Pminkey");
  426. o->oscWrite("Pmaxkey");
  427. }
  428. void PartUI::cb_m1(Fl_Osc_Button* o, void* v) {
  429. ((PartUI*)(o->parent()->parent()->user_data()))->cb_m1_i(o,v);
  430. }
  431. void PartUI::cb_M1_i(Fl_Osc_Button* o, void*) {
  432. o->oscWrite("captureMax");
  433. o->oscWrite("Pminkey");
  434. o->oscWrite("Pmaxkey");
  435. }
  436. void PartUI::cb_M1(Fl_Osc_Button* o, void* v) {
  437. ((PartUI*)(o->parent()->parent()->user_data()))->cb_M1_i(o,v);
  438. }
  439. void PartUI::cb_R1_i(Fl_Osc_Button* o, void*) {
  440. o->oscWrite("Pminkey", "i", 0);
  441. o->oscWrite("Pmaxkey", "i", 127);
  442. }
  443. void PartUI::cb_R1(Fl_Osc_Button* o, void* v) {
  444. ((PartUI*)(o->parent()->parent()->user_data()))->cb_R1_i(o,v);
  445. }
  446. void PartUI::cb_partenablebutton_i(Fl_Osc_Check* o, void*) {
  447. if (o->value()==0) partgroupui->deactivate();
  448. else partgroupui->activate();
  449. }
  450. void PartUI::cb_partenablebutton(Fl_Osc_Check* o, void* v) {
  451. ((PartUI*)(o->parent()->user_data()))->cb_partenablebutton_i(o,v);
  452. }
  453. void PartUI::cb_benddir_i(Fl_Check_Button* o, void*) {
  454. if (o->value()) {bendrng->oscMove("pitchwheel.bendrange_down");}
  455. else {bendrng->oscMove("pitchwheel.bendrange");};
  456. }
  457. void PartUI::cb_benddir(Fl_Check_Button* o, void* v) {
  458. ((PartUI*)(o->parent()->user_data()))->cb_benddir_i(o,v);
  459. }
  460. void PartUI::cb_bendsplt_i(Fl_Osc_Check* o, void*) {
  461. if(o->value()) {benddir->activate();}
  462. else {benddir->deactivate(); benddir->value(0); benddir->do_callback();};
  463. }
  464. void PartUI::cb_bendsplt(Fl_Osc_Check* o, void* v) {
  465. ((PartUI*)(o->parent()->user_data()))->cb_bendsplt_i(o,v);
  466. }
  467. void PartUI::cb_Sustain_i(Fl_Osc_Check*, void*) {
  468. //TODO
  469. /*if (ctl.sustain.receive==0) {
  470. ReleaseSustainedKeys();
  471. ctl.setsustain(0);
  472. };*/;
  473. }
  474. void PartUI::cb_Sustain(Fl_Osc_Check* o, void* v) {
  475. ((PartUI*)(o->parent()->user_data()))->cb_Sustain_i(o,v);
  476. }
  477. void PartUI::cb_Close_i(Fl_Button*, void*) {
  478. ctlwindow->hide();
  479. }
  480. void PartUI::cb_Close(Fl_Button* o, void* v) {
  481. ((PartUI*)(o->parent()->user_data()))->cb_Close_i(o,v);
  482. }
  483. void PartUI::cb_Reset_i(Fl_Osc_Button* o, void*) {
  484. o->oscWrite("defaults");//part->SetController(C_resetallcontrollers,0);
  485. ctlwindow->update();
  486. }
  487. void PartUI::cb_Reset(Fl_Osc_Button* o, void* v) {
  488. ((PartUI*)(o->parent()->user_data()))->cb_Reset_i(o,v);
  489. }
  490. void PartUI::cb_Proprt_i(Fl_Osc_Check* o, void*) {
  491. if(o->value()){propta->activate();proptb->activate();}
  492. else {propta->deactivate();proptb->deactivate();};
  493. }
  494. void PartUI::cb_Proprt(Fl_Osc_Check* o, void* v) {
  495. ((PartUI*)(o->parent()->parent()->user_data()))->cb_Proprt_i(o,v);
  496. }
  497. void PartUI::cb_inseffnocounter_i(Fl_Counter* o, void*) {
  498. ninseff=(int) o->value()-1;
  499. insefftype->oscMove("partefx"+to_s(ninseff)+"/efftype");
  500. inseffectuigroup->reext("partefx"+to_s(ninseff)+"/");
  501. bypasseff->oscMove("Pefxbypass"+to_s(ninseff));
  502. sendtochoice->oscMove("Pefxroute"+to_s(ninseff));
  503. /*insefftype->value(part->partefx[ninseff]->geteffect());*/
  504. //insefftype->do_callback();
  505. inseffectui->refresh();
  506. int x=127;/*part->Pefxroute[ninseff];*/
  507. if (x==127) x=1;
  508. sendtochoice->value(x);
  509. }
  510. void PartUI::cb_inseffnocounter(Fl_Counter* o, void* v) {
  511. ((PartUI*)(o->parent()->user_data()))->cb_inseffnocounter_i(o,v);
  512. }
  513. void PartUI::cb_insefftype_i(Fl_Osc_Choice* o, void*) {
  514. inseffectui->efftype = o->value();
  515. inseffectui->refresh();
  516. }
  517. void PartUI::cb_insefftype(Fl_Osc_Choice* o, void* v) {
  518. ((PartUI*)(o->parent()->user_data()))->cb_insefftype_i(o,v);
  519. }
  520. Fl_Menu_Item PartUI::menu_insefftype[] = {
  521. {"No Effect", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  522. {"Reverb", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  523. {"Echo", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  524. {"Chorus", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  525. {"Phaser", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  526. {"AlienWah", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  527. {"Distortion", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  528. {"EQ", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  529. {"DynFilter", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  530. {0,0,0,0,0,0,0,0,0}
  531. };
  532. void PartUI::cb_Close1_i(Fl_Button*, void*) {
  533. partfx->hide();
  534. }
  535. void PartUI::cb_Close1(Fl_Button* o, void* v) {
  536. ((PartUI*)(o->parent()->user_data()))->cb_Close1_i(o,v);
  537. }
  538. void PartUI::cb_sendtochoice_i(Fl_Osc_Choice* o, void*) {
  539. (void)o;/*int x=(int) o->value();
  540. part->Pefxroute[ninseff]=x;
  541. if (x==2) part->partefx[ninseff]->setdryonly(true);
  542. else part->partefx[ninseff]->setdryonly(false);*/;
  543. }
  544. void PartUI::cb_sendtochoice(Fl_Osc_Choice* o, void* v) {
  545. ((PartUI*)(o->parent()->user_data()))->cb_sendtochoice_i(o,v);
  546. }
  547. Fl_Menu_Item PartUI::menu_sendtochoice[] = {
  548. {"Next Effect", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  549. {"Part Out", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  550. {"Dry Out", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  551. {0,0,0,0,0,0,0,0,0}
  552. };
  553. void PartUI::cb_C_i(Fl_Button*, void*) {
  554. presetsui->copy(partfx->loc()+"partefx"+to_s(ninseff)+"/");
  555. }
  556. void PartUI::cb_C(Fl_Button* o, void* v) {
  557. ((PartUI*)(o->parent()->user_data()))->cb_C_i(o,v);
  558. }
  559. void PartUI::cb_P_i(Fl_Button*, void*) {
  560. presetsui->paste(partfx->loc()+"partefx"+to_s(ninseff)+"/",inseffectui);
  561. }
  562. void PartUI::cb_P(Fl_Button* o, void* v) {
  563. ((PartUI*)(o->parent()->user_data()))->cb_P_i(o,v);
  564. }
  565. void PartUI::cb_Close2_i(Fl_Button*, void*) {
  566. instrumentkitlist->hide();
  567. }
  568. void PartUI::cb_Close2(Fl_Button* o, void* v) {
  569. ((PartUI*)(o->parent()->user_data()))->cb_Close2_i(o,v);
  570. }
  571. void PartUI::cb_Mode_i(Fl_Osc_Choice* o, void*) {
  572. if (o->value()==0) {
  573. for (int i=1;i<NUM_KIT_ITEMS;i++)
  574. partkititem[i]->deactivate();
  575. partkititem[0]->mutedcheck->deactivate();
  576. } else {
  577. for (int i=1;i<NUM_KIT_ITEMS;i++)
  578. partkititem[i]->activate();
  579. partkititem[0]->mutedcheck->activate(); };
  580. }
  581. void PartUI::cb_Mode(Fl_Osc_Choice* o, void* v) {
  582. ((PartUI*)(o->parent()->user_data()))->cb_Mode_i(o,v);
  583. }
  584. Fl_Menu_Item PartUI::menu_Mode[] = {
  585. {"OFF", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  586. {"MULTI", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  587. {"SINGLE", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  588. {0,0,0,0,0,0,0,0,0}
  589. };
  590. void PartUI::cb_Comments_i(Fl_Button*, void*) {
  591. instrumenteditwindow->show();
  592. }
  593. void PartUI::cb_Comments(Fl_Button* o, void* v) {
  594. ((PartUI*)(o->parent()->user_data()))->cb_Comments_i(o,v);
  595. }
  596. void PartUI::cb_Effects_i(Fl_Button*, void*) {
  597. partfx->show();
  598. }
  599. void PartUI::cb_Effects(Fl_Button* o, void* v) {
  600. ((PartUI*)(o->parent()->user_data()))->cb_Effects_i(o,v);
  601. }
  602. void PartUI::cb_padeditbutton1_i(Fl_Button*, void*) {
  603. showparameters(0,2);
  604. }
  605. void PartUI::cb_padeditbutton1(Fl_Button* o, void* v) {
  606. ((PartUI*)(o->parent()->parent()->parent()->user_data()))->cb_padeditbutton1_i(o,v);
  607. }
  608. void PartUI::cb_padsynenabledcheck_i(Fl_Osc_Check* o, void*) {
  609. if (o->value()==0) padeditbutton->deactivate();
  610. else padeditbutton->activate();
  611. }
  612. void PartUI::cb_padsynenabledcheck(Fl_Osc_Check* o, void* v) {
  613. ((PartUI*)(o->parent()->parent()->parent()->user_data()))->cb_padsynenabledcheck_i(o,v);
  614. }
  615. void PartUI::cb_adsynenabledcheck_i(Fl_Osc_Check* o, void*) {
  616. if (o->value()==0) adeditbutton->deactivate();
  617. else adeditbutton->activate();
  618. }
  619. void PartUI::cb_adsynenabledcheck(Fl_Osc_Check* o, void* v) {
  620. ((PartUI*)(o->parent()->parent()->parent()->user_data()))->cb_adsynenabledcheck_i(o,v);
  621. }
  622. void PartUI::cb_adeditbutton1_i(Fl_Button*, void*) {
  623. if (Fl::event_shift()) {
  624. showvoiceparams(0, true);
  625. } else if (Fl::event_ctrl()) {
  626. showvoiceparams(0, false);
  627. } else
  628. showparameters(0,0);
  629. }
  630. void PartUI::cb_adeditbutton1(Fl_Button* o, void* v) {
  631. ((PartUI*)(o->parent()->parent()->parent()->user_data()))->cb_adeditbutton1_i(o,v);
  632. }
  633. void PartUI::cb_subsynenabledcheck_i(Fl_Osc_Check* o, void*) {
  634. if (o->value()==0) subeditbutton->deactivate();
  635. else subeditbutton->activate();
  636. }
  637. void PartUI::cb_subsynenabledcheck(Fl_Osc_Check* o, void* v) {
  638. ((PartUI*)(o->parent()->parent()->parent()->user_data()))->cb_subsynenabledcheck_i(o,v);
  639. }
  640. void PartUI::cb_subeditbutton1_i(Fl_Button*, void*) {
  641. showparameters(0,1);
  642. }
  643. void PartUI::cb_subeditbutton1(Fl_Button* o, void* v) {
  644. ((PartUI*)(o->parent()->parent()->parent()->user_data()))->cb_subeditbutton1_i(o,v);
  645. }
  646. void PartUI::cb_Kit_i(Fl_Button*, void*) {
  647. instrumentkitlist->show();
  648. }
  649. void PartUI::cb_Kit(Fl_Button* o, void* v) {
  650. ((PartUI*)(o->parent()->parent()->user_data()))->cb_Kit_i(o,v);
  651. }
  652. void PartUI::cb_Effects1_i(Fl_Button*, void*) {
  653. partfx->show();
  654. }
  655. void PartUI::cb_Effects1(Fl_Button* o, void* v) {
  656. ((PartUI*)(o->parent()->parent()->user_data()))->cb_Effects1_i(o,v);
  657. }
  658. void PartUI::cb_Author_i(Fl_Osc_Input* o, void*) {
  659. o->oscWrite(o->ext, "s", o->value());
  660. }
  661. void PartUI::cb_Author(Fl_Osc_Input* o, void* v) {
  662. ((PartUI*)(o->parent()->parent()->user_data()))->cb_Author_i(o,v);
  663. }
  664. void PartUI::cb_Comments1_i(Fl_Osc_Input* o, void*) {
  665. o->oscWrite(o->ext, "s", o->value());
  666. }
  667. void PartUI::cb_Comments1(Fl_Osc_Input* o, void* v) {
  668. ((PartUI*)(o->parent()->parent()->user_data()))->cb_Comments1_i(o,v);
  669. }
  670. Fl_Menu_Item PartUI::menu_Type[] = {
  671. {"--------------------------", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  672. {"Piano", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  673. {"Chromatic Percussion", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  674. {"Organ", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  675. {"Guitar", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  676. {"Bass", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  677. {"Solo Strings", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  678. {"Ensemble", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  679. {"Brass", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  680. {"Reed", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  681. {"Pipe", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  682. {"Synth Lead", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  683. {"Synth Pad", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  684. {"Synth Effects", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  685. {"Ethnic", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  686. {"Percussive", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  687. {"Sound Effects", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  688. {0,0,0,0,0,0,0,0,0}
  689. };
  690. void PartUI::cb_Close3_i(Fl_Button*, void*) {
  691. instrumenteditwindow->hide();
  692. }
  693. void PartUI::cb_Close3(Fl_Button* o, void* v) {
  694. ((PartUI*)(o->parent()->user_data()))->cb_Close3_i(o,v);
  695. }
  696. Fl_Group* PartUI::make_window() {
  697. { partgroup = new Fl_Group(0, 0, 385, 180);
  698. partgroup->box(FL_NO_BOX);
  699. partgroup->color(FL_BACKGROUND_COLOR);
  700. partgroup->selection_color(FL_BACKGROUND_COLOR);
  701. partgroup->labeltype(FL_NO_LABEL);
  702. partgroup->labelfont(0);
  703. partgroup->labelsize(14);
  704. partgroup->labelcolor(FL_FOREGROUND_COLOR);
  705. partgroup->user_data((void*)(this));
  706. partgroup->align(Fl_Align(FL_ALIGN_TOP));
  707. partgroup->when(FL_WHEN_RELEASE);
  708. { partgroupui = new Fl_Osc_Group(0, 0, 385, 180);
  709. partgroupui->box(FL_NO_BOX);
  710. partgroupui->color(FL_BACKGROUND_COLOR);
  711. partgroupui->selection_color(FL_BACKGROUND_COLOR);
  712. partgroupui->labeltype(FL_NORMAL_LABEL);
  713. partgroupui->labelfont(0);
  714. partgroupui->labelsize(14);
  715. partgroupui->labelcolor(FL_FOREGROUND_COLOR);
  716. partgroupui->align(Fl_Align(FL_ALIGN_TOP));
  717. partgroupui->when(FL_WHEN_RELEASE);
  718. { Fl_Osc_Dial* o = new Fl_Osc_Dial(50, 40, 25, 25, "Pan");
  719. o->box(FL_ROUND_UP_BOX);
  720. o->color(FL_BACKGROUND_COLOR);
  721. o->selection_color(FL_INACTIVE_COLOR);
  722. o->labeltype(FL_NORMAL_LABEL);
  723. o->labelfont(0);
  724. o->labelsize(11);
  725. o->labelcolor(FL_FOREGROUND_COLOR);
  726. o->maximum(127);
  727. o->step(1);
  728. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  729. o->when(FL_WHEN_CHANGED);
  730. o->init("Ppanning"); o->reset_value=64;
  731. } // Fl_Osc_Dial* o
  732. { Fl_Osc_Counter* o = new Fl_Osc_Counter(195, 45, 90, 20, "KeyShift");
  733. o->box(FL_UP_BOX);
  734. o->color(FL_BACKGROUND_COLOR);
  735. o->selection_color(FL_INACTIVE_COLOR);
  736. o->labeltype(FL_NORMAL_LABEL);
  737. o->labelfont(0);
  738. o->labelsize(11);
  739. o->labelcolor(FL_FOREGROUND_COLOR);
  740. o->minimum(-64);
  741. o->maximum(64);
  742. o->step(1);
  743. o->align(Fl_Align(FL_ALIGN_TOP));
  744. o->when(FL_WHEN_CHANGED);
  745. o->lstep(12);
  746. o->init("Pkeyshift", 'i', -64);
  747. } // Fl_Osc_Counter* o
  748. { Fl_Scroll* o = new Fl_Scroll(166, 91, 125, 49);
  749. o->box(FL_UP_BOX);
  750. o->labelfont(1);
  751. o->labelsize(10);
  752. o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
  753. { Fl_Pack* o = new Fl_Pack(171, 96, 115, 35);
  754. o->type(1);
  755. o->spacing(5);
  756. for (int i=0;i<NUM_SYS_EFX;i++){psyef[i]=new PartSysEffSend(0,0,25,35,"");psyef[i]->init(npart,i);}
  757. o->end();
  758. } // Fl_Pack* o
  759. o->end();
  760. } // Fl_Scroll* o
  761. { PartNameButton* o = new PartNameButton(195, 5, 185, 20, "Grand Piano");
  762. o->tooltip("left mousebutton - to choose/save/.. from/to bank or right mousebutton to cha\
  763. nge the name or middle button to change the instrument information");
  764. o->box(FL_UP_FRAME);
  765. o->down_box(FL_DOWN_FRAME);
  766. o->color(FL_BACKGROUND_COLOR);
  767. o->selection_color(FL_BACKGROUND_COLOR);
  768. o->labeltype(FL_NORMAL_LABEL);
  769. o->labelfont(1);
  770. o->labelsize(11);
  771. o->labelcolor(FL_FOREGROUND_COLOR);
  772. o->callback((Fl_Callback*)cb_Grand);
  773. o->align(Fl_Align(68|FL_ALIGN_INSIDE));
  774. o->when(FL_WHEN_RELEASE);
  775. /*o->label((char *)part->Pname);*/
  776. o->ext = "Pname";o->oscRegister("Pname");
  777. } // PartNameButton* o
  778. { Fl_Box* o = new Fl_Box(166, 81, 95, 10, "To Sys.Efx.");
  779. o->labelfont(1);
  780. o->labelsize(10);
  781. } // Fl_Box* o
  782. { Fl_Osc_Check* o = new Fl_Osc_Check(10, 155, 65, 20, "NoteOn");
  783. o->tooltip("set if the part receives NoteOn messages");
  784. o->box(FL_NO_BOX);
  785. o->down_box(FL_DOWN_BOX);
  786. o->color(FL_BACKGROUND_COLOR);
  787. o->selection_color(FL_FOREGROUND_COLOR);
  788. o->labeltype(FL_NORMAL_LABEL);
  789. o->labelfont(1);
  790. o->labelsize(11);
  791. o->labelcolor(FL_FOREGROUND_COLOR);
  792. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  793. o->when(FL_WHEN_RELEASE);
  794. o->init("Pnoteon");
  795. } // Fl_Osc_Check* o
  796. { Fl_Osc_Counter* o = minkcounter = new Fl_Osc_Counter(295, 125, 40, 15, "Min.k");
  797. minkcounter->tooltip("Minimum key (that the part receives NoteOn messages)");
  798. minkcounter->type(1);
  799. minkcounter->box(FL_UP_BOX);
  800. minkcounter->color(FL_BACKGROUND_COLOR);
  801. minkcounter->selection_color(FL_INACTIVE_COLOR);
  802. minkcounter->labeltype(FL_NORMAL_LABEL);
  803. minkcounter->labelfont(1);
  804. minkcounter->labelsize(10);
  805. minkcounter->labelcolor(FL_FOREGROUND_COLOR);
  806. minkcounter->minimum(0);
  807. minkcounter->maximum(127);
  808. minkcounter->step(1);
  809. minkcounter->textsize(10);
  810. minkcounter->callback((Fl_Callback*)cb_minkcounter);
  811. minkcounter->align(Fl_Align(FL_ALIGN_BOTTOM));
  812. minkcounter->when(FL_WHEN_CHANGED);
  813. o->init("Pminkey");
  814. } // Fl_Osc_Counter* minkcounter
  815. { Fl_Osc_Counter* o = maxkcounter = new Fl_Osc_Counter(340, 125, 40, 15, "Max.k");
  816. maxkcounter->tooltip("Maximum key (that the part receives NoteOn messages)");
  817. maxkcounter->type(1);
  818. maxkcounter->box(FL_UP_BOX);
  819. maxkcounter->color(FL_BACKGROUND_COLOR);
  820. maxkcounter->selection_color(FL_INACTIVE_COLOR);
  821. maxkcounter->labeltype(FL_NORMAL_LABEL);
  822. maxkcounter->labelfont(1);
  823. maxkcounter->labelsize(10);
  824. maxkcounter->labelcolor(FL_FOREGROUND_COLOR);
  825. maxkcounter->minimum(0);
  826. maxkcounter->maximum(127);
  827. maxkcounter->step(1);
  828. maxkcounter->textsize(10);
  829. maxkcounter->callback((Fl_Callback*)cb_maxkcounter);
  830. maxkcounter->align(Fl_Align(FL_ALIGN_BOTTOM));
  831. maxkcounter->when(FL_WHEN_CHANGED);
  832. o->init("Pmaxkey");
  833. } // Fl_Osc_Counter* maxkcounter
  834. { Fl_Osc_Dial* o = new Fl_Osc_Dial(10, 35, 30, 30, "Volume");
  835. o->tooltip("Part Volume");
  836. o->box(FL_ROUND_UP_BOX);
  837. o->color(FL_BACKGROUND_COLOR);
  838. o->selection_color(FL_INACTIVE_COLOR);
  839. o->labeltype(FL_NORMAL_LABEL);
  840. o->labelfont(0);
  841. o->labelsize(11);
  842. o->labelcolor(FL_FOREGROUND_COLOR);
  843. o->maximum(127);
  844. o->step(1);
  845. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  846. o->when(FL_WHEN_CHANGED);
  847. o->init("Pvolume"); o->reset_value=96;
  848. } // Fl_Osc_Dial* o
  849. { Fl_Osc_Dial* o = new Fl_Osc_Dial(135, 40, 25, 25, "Vel.Ofs.");
  850. o->tooltip("Velocity Offset");
  851. o->box(FL_ROUND_UP_BOX);
  852. o->color(FL_BACKGROUND_COLOR);
  853. o->selection_color(FL_INACTIVE_COLOR);
  854. o->labeltype(FL_NORMAL_LABEL);
  855. o->labelfont(0);
  856. o->labelsize(10);
  857. o->labelcolor(FL_FOREGROUND_COLOR);
  858. o->maximum(127);
  859. o->step(1);
  860. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  861. o->when(FL_WHEN_CHANGED);
  862. o->init("Pveloffs"); o->reset_value=64;
  863. } // Fl_Osc_Dial* o
  864. { Fl_Osc_Dial* o = new Fl_Osc_Dial(95, 40, 25, 25, "Vel.Sns.");
  865. o->tooltip("Velocity Sensing Function");
  866. o->box(FL_ROUND_UP_BOX);
  867. o->color(FL_BACKGROUND_COLOR);
  868. o->selection_color(FL_INACTIVE_COLOR);
  869. o->labeltype(FL_NORMAL_LABEL);
  870. o->labelfont(0);
  871. o->labelsize(10);
  872. o->labelcolor(FL_FOREGROUND_COLOR);
  873. o->maximum(127);
  874. o->step(1);
  875. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  876. o->when(FL_WHEN_CHANGED);
  877. o->init("Pvelsns"); o->reset_value=64;
  878. } // Fl_Osc_Dial* o
  879. { Fl_Button* o = new Fl_Button(295, 90, 85, 30, "Controllers");
  880. o->labelfont(1);
  881. o->labelsize(11);
  882. o->callback((Fl_Callback*)cb_Controllers);
  883. } // Fl_Button* o
  884. { Fl_Osc_Check* o = new Fl_Osc_Check(95, 155, 88, 20, "Portamento");
  885. o->tooltip("Enable/Disable the portamento");
  886. o->box(FL_NO_BOX);
  887. o->down_box(FL_DOWN_BOX);
  888. o->color(FL_BACKGROUND_COLOR);
  889. o->selection_color(FL_FOREGROUND_COLOR);
  890. o->labeltype(FL_NORMAL_LABEL);
  891. o->labelfont(1);
  892. o->labelsize(11);
  893. o->labelcolor(FL_FOREGROUND_COLOR);
  894. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  895. o->when(FL_WHEN_RELEASE);
  896. o->init("ctl/portamento.portamento");
  897. } // Fl_Osc_Check* o
  898. { Fl_Button* o = new Fl_Button(15, 90, 130, 30, "Edit instrument");
  899. o->color(FL_LIGHT2);
  900. o->labelfont(1);
  901. o->labelsize(13);
  902. o->callback((Fl_Callback*)cb_Edit);
  903. } // Fl_Button* o
  904. { Fl_Osc_Button* o = new Fl_Osc_Button(315, 155, 15, 12, "m");
  905. o->tooltip("set the minimum key to the last pressed key");
  906. o->box(FL_THIN_UP_BOX);
  907. o->color(FL_BACKGROUND_COLOR);
  908. o->selection_color(FL_BACKGROUND_COLOR);
  909. o->labeltype(FL_NORMAL_LABEL);
  910. o->labelfont(0);
  911. o->labelsize(10);
  912. o->labelcolor(FL_FOREGROUND_COLOR);
  913. o->callback((Fl_Callback*)cb_m1);
  914. o->align(Fl_Align(FL_ALIGN_CENTER));
  915. o->when(FL_WHEN_RELEASE);
  916. } // Fl_Osc_Button* o
  917. { Fl_Osc_Button* o = new Fl_Osc_Button(345, 155, 15, 12, "M");
  918. o->tooltip("set the maximum key to the last pressed key");
  919. o->box(FL_THIN_UP_BOX);
  920. o->color(FL_BACKGROUND_COLOR);
  921. o->selection_color(FL_BACKGROUND_COLOR);
  922. o->labeltype(FL_NORMAL_LABEL);
  923. o->labelfont(0);
  924. o->labelsize(10);
  925. o->labelcolor(FL_FOREGROUND_COLOR);
  926. o->callback((Fl_Callback*)cb_M1);
  927. o->align(Fl_Align(FL_ALIGN_CENTER));
  928. o->when(FL_WHEN_RELEASE);
  929. } // Fl_Osc_Button* o
  930. { Fl_Osc_Button* o = new Fl_Osc_Button(330, 155, 15, 12, "R");
  931. o->tooltip("reset the minimum key to 0 and maximum key to 127");
  932. o->box(FL_THIN_UP_BOX);
  933. o->color(FL_BACKGROUND_COLOR);
  934. o->selection_color(FL_BACKGROUND_COLOR);
  935. o->labeltype(FL_NORMAL_LABEL);
  936. o->labelfont(1);
  937. o->labelsize(10);
  938. o->labelcolor(FL_FOREGROUND_COLOR);
  939. o->callback((Fl_Callback*)cb_R1);
  940. o->align(Fl_Align(FL_ALIGN_CENTER));
  941. o->when(FL_WHEN_RELEASE);
  942. } // Fl_Osc_Button* o
  943. { Fl_Osc_Choice* o = new Fl_Osc_Choice(310, 45, 70, 20, "MIDI Chn.Rcv.");
  944. o->tooltip("receive from Midi channel");
  945. o->box(FL_UP_BOX);
  946. o->down_box(FL_BORDER_BOX);
  947. o->color(FL_BACKGROUND_COLOR);
  948. o->selection_color(FL_SELECTION_COLOR);
  949. o->labeltype(FL_NORMAL_LABEL);
  950. o->labelfont(0);
  951. o->labelsize(10);
  952. o->labelcolor(FL_FOREGROUND_COLOR);
  953. o->textfont(1);
  954. o->textsize(10);
  955. o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  956. o->when(FL_WHEN_RELEASE);
  957. char nrstr[10]; for(int i=0;i<NUM_MIDI_CHANNELS;i++){sprintf(nrstr,"Chn%d",i+1);if (i!=9) o->add(nrstr); else o->add("Drms10");};
  958. o->init("Prcvchn");
  959. } // Fl_Osc_Choice* o
  960. { Fl_Osc_Counter* o = keylimitlist = new Fl_Osc_Counter(215, 155, 50, 20, "KLmt");
  961. keylimitlist->tooltip("Key Limit");
  962. keylimitlist->box(FL_UP_BOX);
  963. keylimitlist->color(FL_BACKGROUND_COLOR);
  964. keylimitlist->selection_color(FL_INACTIVE_COLOR);
  965. keylimitlist->labeltype(FL_NORMAL_LABEL);
  966. keylimitlist->labelfont(0);
  967. keylimitlist->labelsize(10);
  968. keylimitlist->labelcolor(FL_FOREGROUND_COLOR);
  969. keylimitlist->textfont(1);
  970. keylimitlist->textsize(10);
  971. keylimitlist->align(Fl_Align(FL_ALIGN_RIGHT));
  972. keylimitlist->when(FL_WHEN_CHANGED);
  973. o->init("Pkeylimit",'i');
  974. o->step(1.0,10.0);
  975. o->range(0,127);
  976. } // Fl_Osc_Counter* keylimitlist
  977. { Fl_Osc_Choice* o = new Fl_Osc_Choice(80, 130, 64, 18, "Mode :");
  978. o->tooltip("Poly, Mono or Legato mode");
  979. o->box(FL_UP_BOX);
  980. o->down_box(FL_BORDER_BOX);
  981. o->color(FL_BACKGROUND_COLOR);
  982. o->selection_color(FL_SELECTION_COLOR);
  983. o->labeltype(FL_NORMAL_LABEL);
  984. o->labelfont(1);
  985. o->labelsize(11);
  986. o->labelcolor(FL_FOREGROUND_COLOR);
  987. o->textfont(1);
  988. o->textsize(10);
  989. o->align(Fl_Align(FL_ALIGN_LEFT));
  990. o->when(FL_WHEN_RELEASE);
  991. o->add("Poly"); o->add("Mono"); o->add("Legato");
  992. o->init("polyType");
  993. } // Fl_Osc_Choice* o
  994. partgroupui->end();
  995. } // Fl_Osc_Group* partgroupui
  996. { Fl_Osc_Check* o = partenablebutton = new Fl_Osc_Check(90, 5, 75, 20, "Enabled");
  997. partenablebutton->box(FL_NO_BOX);
  998. partenablebutton->down_box(FL_DOWN_BOX);
  999. partenablebutton->color(FL_BACKGROUND_COLOR);
  1000. partenablebutton->selection_color(FL_FOREGROUND_COLOR);
  1001. partenablebutton->labeltype(FL_NORMAL_LABEL);
  1002. partenablebutton->labelfont(1);
  1003. partenablebutton->labelsize(11);
  1004. partenablebutton->labelcolor(FL_FOREGROUND_COLOR);
  1005. partenablebutton->callback((Fl_Callback*)cb_partenablebutton);
  1006. partenablebutton->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1007. partenablebutton->when(FL_WHEN_RELEASE);
  1008. o->init("Penabled");
  1009. } // Fl_Osc_Check* partenablebutton
  1010. partgroup->end();
  1011. } // Fl_Group* partgroup
  1012. { ctlwindow = new Fl_Osc_Window(500, 135, "Controllers");
  1013. ctlwindow->box(FL_NO_BOX);
  1014. ctlwindow->color(FL_BACKGROUND_COLOR);
  1015. ctlwindow->selection_color(FL_BACKGROUND_COLOR);
  1016. ctlwindow->labeltype(FL_NO_LABEL);
  1017. ctlwindow->labelfont(0);
  1018. ctlwindow->labelsize(14);
  1019. ctlwindow->labelcolor(FL_FOREGROUND_COLOR);
  1020. ctlwindow->user_data((void*)(this));
  1021. ctlwindow->align(Fl_Align(FL_ALIGN_TOP));
  1022. ctlwindow->when(FL_WHEN_RELEASE);
  1023. { new Fl_Box(0, 0, 0, 0);
  1024. ctlwindow->init(osc,"/part"+to_s(npart)+"/ctl/");
  1025. } // Fl_Box* o
  1026. { Fl_Osc_Check* o = new Fl_Osc_Check(155, 58, 45, 20, "Expr");
  1027. o->tooltip("Expression enable");
  1028. o->box(FL_THIN_UP_BOX);
  1029. o->down_box(FL_DOWN_BOX);
  1030. o->color(FL_BACKGROUND_COLOR);
  1031. o->selection_color(FL_FOREGROUND_COLOR);
  1032. o->labeltype(FL_NORMAL_LABEL);
  1033. o->labelfont(0);
  1034. o->labelsize(10);
  1035. o->labelcolor(FL_FOREGROUND_COLOR);
  1036. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1037. o->when(FL_WHEN_RELEASE);
  1038. o->init("expression.receive");
  1039. } // Fl_Osc_Check* o
  1040. { Fl_Osc_Dial* o = new Fl_Osc_Dial(10, 55, 30, 30, "PanDpth");
  1041. o->tooltip("Panning Depth");
  1042. o->box(FL_NO_BOX);
  1043. o->color(FL_BACKGROUND_COLOR);
  1044. o->selection_color(FL_INACTIVE_COLOR);
  1045. o->labeltype(FL_NORMAL_LABEL);
  1046. o->labelfont(0);
  1047. o->labelsize(10);
  1048. o->labelcolor(FL_FOREGROUND_COLOR);
  1049. o->maximum(127);
  1050. o->step(1);
  1051. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1052. o->when(FL_WHEN_CHANGED);
  1053. o->init("panning.depth");o->reset_value=64;
  1054. } // Fl_Osc_Dial* o
  1055. { Fl_Osc_Dial* o = new Fl_Osc_Dial(90, 55, 30, 30, "FltCut");
  1056. o->tooltip("Filter Cutoff depth");
  1057. o->box(FL_NO_BOX);
  1058. o->color(FL_BACKGROUND_COLOR);
  1059. o->selection_color(FL_INACTIVE_COLOR);
  1060. o->labeltype(FL_NORMAL_LABEL);
  1061. o->labelfont(0);
  1062. o->labelsize(10);
  1063. o->labelcolor(FL_FOREGROUND_COLOR);
  1064. o->maximum(127);
  1065. o->step(1);
  1066. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1067. o->when(FL_WHEN_CHANGED);
  1068. o->init("filtercutoff.depth");o->reset_value=64;
  1069. } // Fl_Osc_Dial* o
  1070. { Fl_Osc_Dial* o = new Fl_Osc_Dial(50, 55, 30, 30, "FltQ");
  1071. o->tooltip("Filter Q depth");
  1072. o->box(FL_NO_BOX);
  1073. o->color(FL_BACKGROUND_COLOR);
  1074. o->selection_color(FL_INACTIVE_COLOR);
  1075. o->labeltype(FL_NORMAL_LABEL);
  1076. o->labelfont(0);
  1077. o->labelsize(10);
  1078. o->labelcolor(FL_FOREGROUND_COLOR);
  1079. o->maximum(127);
  1080. o->step(1);
  1081. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1082. o->when(FL_WHEN_CHANGED);
  1083. o->init("filterq.depth");o->reset_value=64;
  1084. } // Fl_Osc_Dial* o
  1085. { Fl_Osc_Dial* o = new Fl_Osc_Dial(125, 10, 30, 30, "BwDpth");
  1086. o->tooltip("BandWidth depth");
  1087. o->box(FL_NO_BOX);
  1088. o->color(FL_BACKGROUND_COLOR);
  1089. o->selection_color(FL_INACTIVE_COLOR);
  1090. o->labeltype(FL_NORMAL_LABEL);
  1091. o->labelfont(0);
  1092. o->labelsize(10);
  1093. o->labelcolor(FL_FOREGROUND_COLOR);
  1094. o->maximum(127);
  1095. o->step(1);
  1096. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1097. o->when(FL_WHEN_CHANGED);
  1098. o->init("bandwidth.depth");o->reset_value=64;
  1099. } // Fl_Osc_Dial* o
  1100. { Fl_Osc_Dial* o = new Fl_Osc_Dial(50, 10, 30, 30, "ModWh");
  1101. o->tooltip("Modulation Wheel depth");
  1102. o->box(FL_NO_BOX);
  1103. o->color(FL_BACKGROUND_COLOR);
  1104. o->selection_color(FL_INACTIVE_COLOR);
  1105. o->labeltype(FL_NORMAL_LABEL);
  1106. o->labelfont(0);
  1107. o->labelsize(10);
  1108. o->labelcolor(FL_FOREGROUND_COLOR);
  1109. o->maximum(127);
  1110. o->step(1);
  1111. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1112. o->when(FL_WHEN_CHANGED);
  1113. o->init("modwheel.depth");o->reset_value=80;
  1114. } // Fl_Osc_Dial* o
  1115. { benddir = new Fl_Check_Button(205, 37, 69, 15, "Downward");
  1116. benddir->down_box(FL_DOWN_BOX);
  1117. benddir->labelsize(10);
  1118. benddir->callback((Fl_Callback*)cb_benddir);
  1119. } // Fl_Check_Button* benddir
  1120. { Fl_Osc_Counter* o = bendrng = new Fl_Osc_Counter(165, 15, 110, 20, "PWheelB.Rng (cents)");
  1121. bendrng->tooltip("Pitch Wheel Bend Range (cents)");
  1122. bendrng->box(FL_UP_BOX);
  1123. bendrng->color(FL_BACKGROUND_COLOR);
  1124. bendrng->selection_color(FL_INACTIVE_COLOR);
  1125. bendrng->labeltype(FL_NORMAL_LABEL);
  1126. bendrng->labelfont(0);
  1127. bendrng->labelsize(10);
  1128. bendrng->labelcolor(FL_FOREGROUND_COLOR);
  1129. bendrng->minimum(-6400);
  1130. bendrng->maximum(6400);
  1131. bendrng->step(1);
  1132. bendrng->align(Fl_Align(FL_ALIGN_TOP));
  1133. bendrng->when(FL_WHEN_CHANGED);
  1134. o->init("pitchwheel.bendrange", 'i');
  1135. o->lstep(100);
  1136. } // Fl_Osc_Counter* bendrng
  1137. { Fl_Osc_Check* o = bendsplt = new Fl_Osc_Check(167, 37, 38, 15, "Split");
  1138. bendsplt->box(FL_NO_BOX);
  1139. bendsplt->down_box(FL_DOWN_BOX);
  1140. bendsplt->color(FL_BACKGROUND_COLOR);
  1141. bendsplt->selection_color(FL_FOREGROUND_COLOR);
  1142. bendsplt->labeltype(FL_NORMAL_LABEL);
  1143. bendsplt->labelfont(0);
  1144. bendsplt->labelsize(10);
  1145. bendsplt->labelcolor(FL_FOREGROUND_COLOR);
  1146. bendsplt->callback((Fl_Callback*)cb_bendsplt);
  1147. bendsplt->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1148. bendsplt->when(FL_WHEN_RELEASE);
  1149. o->init("pitchwheel.is_split");
  1150. } // Fl_Osc_Check* bendsplt
  1151. { Fl_Osc_Check* o = new Fl_Osc_Check(205, 58, 60, 20, "FMamp");
  1152. o->tooltip("FM amplitude enable");
  1153. o->box(FL_THIN_UP_BOX);
  1154. o->down_box(FL_DOWN_BOX);
  1155. o->color(FL_BACKGROUND_COLOR);
  1156. o->selection_color(FL_FOREGROUND_COLOR);
  1157. o->labeltype(FL_NORMAL_LABEL);
  1158. o->labelfont(0);
  1159. o->labelsize(10);
  1160. o->labelcolor(FL_FOREGROUND_COLOR);
  1161. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1162. o->when(FL_WHEN_RELEASE);
  1163. o->init("fmamp.receive");
  1164. } // Fl_Osc_Check* o
  1165. { Fl_Osc_Check* o = new Fl_Osc_Check(155, 83, 45, 20, "Vol");
  1166. o->tooltip("Volume enable");
  1167. o->box(FL_THIN_UP_BOX);
  1168. o->down_box(FL_DOWN_BOX);
  1169. o->color(FL_BACKGROUND_COLOR);
  1170. o->selection_color(FL_FOREGROUND_COLOR);
  1171. o->labeltype(FL_NORMAL_LABEL);
  1172. o->labelfont(0);
  1173. o->labelsize(10);
  1174. o->labelcolor(FL_FOREGROUND_COLOR);
  1175. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1176. o->when(FL_WHEN_RELEASE);
  1177. o->init("volume.receive");
  1178. } // Fl_Osc_Check* o
  1179. { Fl_Osc_Check* o = new Fl_Osc_Check(205, 83, 60, 20, "Sustain");
  1180. o->tooltip("Sustain pedal enable");
  1181. o->box(FL_THIN_UP_BOX);
  1182. o->down_box(FL_DOWN_BOX);
  1183. o->color(FL_BACKGROUND_COLOR);
  1184. o->selection_color(FL_FOREGROUND_COLOR);
  1185. o->labeltype(FL_NORMAL_LABEL);
  1186. o->labelfont(0);
  1187. o->labelsize(10);
  1188. o->labelcolor(FL_FOREGROUND_COLOR);
  1189. o->callback((Fl_Callback*)cb_Sustain);
  1190. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1191. o->when(FL_WHEN_RELEASE);
  1192. o->init("sustain.receive");
  1193. } // Fl_Osc_Check* o
  1194. { Fl_Button* o = new Fl_Button(400, 110, 95, 20, "Close");
  1195. o->box(FL_THIN_UP_BOX);
  1196. o->callback((Fl_Callback*)cb_Close);
  1197. } // Fl_Button* o
  1198. { Fl_Osc_Button* o = new Fl_Osc_Button(5, 110, 210, 20, "Reset all controllers");
  1199. o->box(FL_THIN_UP_BOX);
  1200. o->color(FL_BACKGROUND_COLOR);
  1201. o->selection_color(FL_BACKGROUND_COLOR);
  1202. o->labeltype(FL_NORMAL_LABEL);
  1203. o->labelfont(0);
  1204. o->labelsize(14);
  1205. o->labelcolor(FL_FOREGROUND_COLOR);
  1206. o->callback((Fl_Callback*)cb_Reset);
  1207. o->align(Fl_Align(FL_ALIGN_CENTER));
  1208. o->when(FL_WHEN_RELEASE);
  1209. } // Fl_Osc_Button* o
  1210. { Fl_Osc_Group* o = new Fl_Osc_Group(280, 15, 160, 90, "Portamento");
  1211. o->box(FL_UP_FRAME);
  1212. o->color(FL_BACKGROUND_COLOR);
  1213. o->selection_color(FL_BACKGROUND_COLOR);
  1214. o->labeltype(FL_NORMAL_LABEL);
  1215. o->labelfont(0);
  1216. o->labelsize(10);
  1217. o->labelcolor(FL_FOREGROUND_COLOR);
  1218. o->align(Fl_Align(FL_ALIGN_TOP));
  1219. o->when(FL_WHEN_RELEASE);
  1220. { Fl_Osc_Check* o = new Fl_Osc_Check(285, 20, 40, 20, "Rcv");
  1221. o->tooltip("Receive Portamento Controllers");
  1222. o->box(FL_THIN_UP_BOX);
  1223. o->down_box(FL_DOWN_BOX);
  1224. o->color(FL_BACKGROUND_COLOR);
  1225. o->selection_color(FL_FOREGROUND_COLOR);
  1226. o->labeltype(FL_NORMAL_LABEL);
  1227. o->labelfont(0);
  1228. o->labelsize(10);
  1229. o->labelcolor(FL_FOREGROUND_COLOR);
  1230. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1231. o->when(FL_WHEN_RELEASE);
  1232. o->init("portamento.receive");
  1233. } // Fl_Osc_Check* o
  1234. { Fl_Osc_Dial* o = new Fl_Osc_Dial(285, 60, 25, 25, "time");
  1235. o->tooltip("Portamento time");
  1236. o->box(FL_NO_BOX);
  1237. o->color(FL_BACKGROUND_COLOR);
  1238. o->selection_color(FL_INACTIVE_COLOR);
  1239. o->labeltype(FL_NORMAL_LABEL);
  1240. o->labelfont(0);
  1241. o->labelsize(10);
  1242. o->labelcolor(FL_FOREGROUND_COLOR);
  1243. o->maximum(127);
  1244. o->step(1);
  1245. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1246. o->when(FL_WHEN_CHANGED);
  1247. o->init("portamento.time");o->reset_value=64;
  1248. } // Fl_Osc_Dial* o
  1249. { Fl_Osc_Counter* o = new Fl_Osc_Counter(340, 20, 50, 20, "thresh");
  1250. o->tooltip("Minimum or max. difference of the notes in order to do the portamento (x 100 \
  1251. cents)");
  1252. o->type(1);
  1253. o->box(FL_UP_BOX);
  1254. o->color(FL_BACKGROUND_COLOR);
  1255. o->selection_color(FL_INACTIVE_COLOR);
  1256. o->labeltype(FL_NORMAL_LABEL);
  1257. o->labelfont(0);
  1258. o->labelsize(10);
  1259. o->labelcolor(FL_FOREGROUND_COLOR);
  1260. o->minimum(0);
  1261. o->maximum(127);
  1262. o->step(1);
  1263. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1264. o->when(FL_WHEN_CHANGED);
  1265. o->init("portamento.pitchthresh");
  1266. } // Fl_Osc_Counter* o
  1267. { Fl_Osc_Check* o = new Fl_Osc_Check(365, 70, 15, 15, "th.type");
  1268. o->tooltip("Threshold type (min/max)");
  1269. o->box(FL_NO_BOX);
  1270. o->down_box(FL_DOWN_BOX);
  1271. o->color(FL_BACKGROUND_COLOR);
  1272. o->selection_color(FL_FOREGROUND_COLOR);
  1273. o->labeltype(FL_NORMAL_LABEL);
  1274. o->labelfont(0);
  1275. o->labelsize(10);
  1276. o->labelcolor(FL_FOREGROUND_COLOR);
  1277. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1278. o->when(FL_WHEN_RELEASE);
  1279. o->init("portamento.pitchthreshtype");
  1280. } // Fl_Osc_Check* o
  1281. { Fl_Box* o = new Fl_Box(340, 50, 55, 15, "x100 cnt.");
  1282. o->labelsize(10);
  1283. o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
  1284. } // Fl_Box* o
  1285. { Fl_Osc_Dial* o = new Fl_Osc_Dial(315, 60, 25, 25, "t.dn/up");
  1286. o->tooltip("Portamento time stretch (up/down)");
  1287. o->box(FL_NO_BOX);
  1288. o->color(FL_BACKGROUND_COLOR);
  1289. o->selection_color(FL_INACTIVE_COLOR);
  1290. o->labeltype(FL_NORMAL_LABEL);
  1291. o->labelfont(0);
  1292. o->labelsize(10);
  1293. o->labelcolor(FL_FOREGROUND_COLOR);
  1294. o->maximum(127);
  1295. o->step(1);
  1296. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1297. o->when(FL_WHEN_CHANGED);
  1298. o->init("portamento.updowntimestretch");o->reset_value=64;
  1299. } // Fl_Osc_Dial* o
  1300. { Fl_Osc_Dial* o = propta = new Fl_Osc_Dial(405, 20, 25, 25, "Prp.Rate");
  1301. propta->tooltip("Distance required to double change from nonpropotinal portamento time");
  1302. propta->box(FL_NO_BOX);
  1303. propta->color(FL_BACKGROUND_COLOR);
  1304. propta->selection_color(FL_INACTIVE_COLOR);
  1305. propta->labeltype(FL_NORMAL_LABEL);
  1306. propta->labelfont(0);
  1307. propta->labelsize(9);
  1308. propta->labelcolor(FL_FOREGROUND_COLOR);
  1309. propta->maximum(127);
  1310. propta->step(1);
  1311. propta->align(Fl_Align(FL_ALIGN_BOTTOM));
  1312. propta->when(FL_WHEN_CHANGED);
  1313. o->init("portamento.propRate");o->reset_value=80;
  1314. } // Fl_Osc_Dial* propta
  1315. { Fl_Osc_Dial* o = proptb = new Fl_Osc_Dial(405, 60, 25, 25, "Prp.Dpth");
  1316. proptb->tooltip("The difference from nonproportinal portamento");
  1317. proptb->box(FL_NO_BOX);
  1318. proptb->color(FL_BACKGROUND_COLOR);
  1319. proptb->selection_color(FL_INACTIVE_COLOR);
  1320. proptb->labeltype(FL_NORMAL_LABEL);
  1321. proptb->labelfont(0);
  1322. proptb->labelsize(9);
  1323. proptb->labelcolor(FL_FOREGROUND_COLOR);
  1324. proptb->maximum(127);
  1325. proptb->step(1);
  1326. proptb->align(Fl_Align(FL_ALIGN_BOTTOM));
  1327. proptb->when(FL_WHEN_CHANGED);
  1328. o->init("portamento.propDepth");o->reset_value=90;
  1329. } // Fl_Osc_Dial* proptb
  1330. { Fl_Osc_Check* o = new Fl_Osc_Check(285, 40, 50, 15, "Proprt.");
  1331. o->tooltip("Enable Proportinal Portamento (over fixed Portamento)");
  1332. o->box(FL_THIN_UP_BOX);
  1333. o->down_box(FL_DOWN_BOX);
  1334. o->color(FL_BACKGROUND_COLOR);
  1335. o->selection_color(FL_FOREGROUND_COLOR);
  1336. o->labeltype(FL_NORMAL_LABEL);
  1337. o->labelfont(0);
  1338. o->labelsize(9);
  1339. o->labelcolor(FL_FOREGROUND_COLOR);
  1340. o->callback((Fl_Callback*)cb_Proprt);
  1341. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1342. o->when(FL_WHEN_RELEASE);
  1343. o->init("portamento.proportional");
  1344. } // Fl_Osc_Check* o
  1345. o->end();
  1346. } // Fl_Osc_Group* o
  1347. { Fl_Osc_Group* o = new Fl_Osc_Group(445, 15, 50, 90, "Resonance");
  1348. o->box(FL_UP_FRAME);
  1349. o->color(FL_BACKGROUND_COLOR);
  1350. o->selection_color(FL_BACKGROUND_COLOR);
  1351. o->labeltype(FL_NORMAL_LABEL);
  1352. o->labelfont(0);
  1353. o->labelsize(10);
  1354. o->labelcolor(FL_FOREGROUND_COLOR);
  1355. o->align(Fl_Align(FL_ALIGN_TOP));
  1356. o->when(FL_WHEN_RELEASE);
  1357. { Fl_Osc_Dial* o = new Fl_Osc_Dial(455, 60, 25, 25, "BWdpth");
  1358. o->tooltip("BandWidth controller depth");
  1359. o->box(FL_NO_BOX);
  1360. o->color(FL_BACKGROUND_COLOR);
  1361. o->selection_color(FL_INACTIVE_COLOR);
  1362. o->labeltype(FL_NORMAL_LABEL);
  1363. o->labelfont(0);
  1364. o->labelsize(10);
  1365. o->labelcolor(FL_FOREGROUND_COLOR);
  1366. o->maximum(127);
  1367. o->step(1);
  1368. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1369. o->when(FL_WHEN_CHANGED);
  1370. o->init("resonancebandwidth.depth");o->reset_value=64;
  1371. } // Fl_Osc_Dial* o
  1372. { Fl_Osc_Dial* o = new Fl_Osc_Dial(455, 20, 25, 25, "CFdpth");
  1373. o->tooltip("Center Frequency controller Depth");
  1374. o->box(FL_NO_BOX);
  1375. o->color(FL_BACKGROUND_COLOR);
  1376. o->selection_color(FL_INACTIVE_COLOR);
  1377. o->labeltype(FL_NORMAL_LABEL);
  1378. o->labelfont(0);
  1379. o->labelsize(10);
  1380. o->labelcolor(FL_FOREGROUND_COLOR);
  1381. o->maximum(127);
  1382. o->step(1);
  1383. o->align(Fl_Align(FL_ALIGN_BOTTOM));
  1384. o->when(FL_WHEN_CHANGED);
  1385. o->init("resonancecenter.depth");o->reset_value=64;
  1386. } // Fl_Osc_Dial* o
  1387. o->end();
  1388. } // Fl_Osc_Group* o
  1389. { Fl_Osc_Check* o = new Fl_Osc_Check(10, 15, 40, 25, "Exp MWh");
  1390. o->tooltip("Exponential modulation wheel");
  1391. o->box(FL_NO_BOX);
  1392. o->down_box(FL_DOWN_BOX);
  1393. o->color(FL_BACKGROUND_COLOR);
  1394. o->selection_color(FL_FOREGROUND_COLOR);
  1395. o->labeltype(FL_NORMAL_LABEL);
  1396. o->labelfont(0);
  1397. o->labelsize(10);
  1398. o->labelcolor(FL_FOREGROUND_COLOR);
  1399. o->align(Fl_Align(132|FL_ALIGN_INSIDE));
  1400. o->when(FL_WHEN_RELEASE);
  1401. o->init("modwheel.exponential");
  1402. } // Fl_Osc_Check* o
  1403. { Fl_Osc_Check* o = new Fl_Osc_Check(85, 15, 35, 25, "Exp BW");
  1404. o->tooltip("Exponential BandWidth Controller");
  1405. o->box(FL_NO_BOX);
  1406. o->down_box(FL_DOWN_BOX);
  1407. o->color(FL_BACKGROUND_COLOR);
  1408. o->selection_color(FL_FOREGROUND_COLOR);
  1409. o->labeltype(FL_NORMAL_LABEL);
  1410. o->labelfont(0);
  1411. o->labelsize(10);
  1412. o->labelcolor(FL_FOREGROUND_COLOR);
  1413. o->align(Fl_Align(132|FL_ALIGN_INSIDE));
  1414. o->when(FL_WHEN_RELEASE);
  1415. o->init("bandwidth.exponential");
  1416. } // Fl_Osc_Check* o
  1417. ctlwindow->end();
  1418. } // Fl_Osc_Window* ctlwindow
  1419. { partfx = new Fl_Osc_Window(390, 145, "Part\'s Insert Effects");
  1420. partfx->box(FL_NO_BOX);
  1421. partfx->color(FL_BACKGROUND_COLOR);
  1422. partfx->selection_color(FL_BACKGROUND_COLOR);
  1423. partfx->labeltype(FL_NO_LABEL);
  1424. partfx->labelfont(0);
  1425. partfx->labelsize(14);
  1426. partfx->labelcolor(FL_FOREGROUND_COLOR);
  1427. partfx->user_data((void*)(this));
  1428. partfx->align(Fl_Align(FL_ALIGN_TOP));
  1429. partfx->when(FL_WHEN_RELEASE);
  1430. { new Fl_Box(0, 0, 0, 0);
  1431. partfx->init(osc, part_path);
  1432. } // Fl_Box* o
  1433. { Fl_Counter* o = inseffnocounter = new Fl_Counter(5, 110, 80, 20, "FX No.");
  1434. inseffnocounter->type(1);
  1435. inseffnocounter->labelfont(1);
  1436. inseffnocounter->minimum(1);
  1437. inseffnocounter->maximum(127);
  1438. inseffnocounter->step(1);
  1439. inseffnocounter->textfont(1);
  1440. inseffnocounter->callback((Fl_Callback*)cb_inseffnocounter);
  1441. inseffnocounter->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT));
  1442. o->bounds(1,NUM_PART_EFX);
  1443. o->value(ninseff+1);
  1444. } // Fl_Counter* inseffnocounter
  1445. { Fl_Osc_Choice* o = insefftype = new Fl_Osc_Choice(155, 110, 70, 15, "EffType");
  1446. insefftype->box(FL_UP_BOX);
  1447. insefftype->down_box(FL_BORDER_BOX);
  1448. insefftype->color(FL_BACKGROUND_COLOR);
  1449. insefftype->selection_color(FL_SELECTION_COLOR);
  1450. insefftype->labeltype(FL_NORMAL_LABEL);
  1451. insefftype->labelfont(0);
  1452. insefftype->labelsize(10);
  1453. insefftype->labelcolor(FL_FOREGROUND_COLOR);
  1454. insefftype->callback((Fl_Callback*)cb_insefftype);
  1455. insefftype->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT));
  1456. insefftype->when(FL_WHEN_RELEASE);
  1457. insefftype->menu(menu_insefftype);
  1458. o->init(("partefx"+to_s(ninseff)+"/efftype").c_str());
  1459. } // Fl_Osc_Choice* insefftype
  1460. { inseffectuigroup = new Fl_Osc_Group(5, 5, 380, 100);
  1461. inseffectuigroup->box(FL_FLAT_BOX);
  1462. inseffectuigroup->color((Fl_Color)48);
  1463. inseffectuigroup->selection_color(FL_BACKGROUND_COLOR);
  1464. inseffectuigroup->labeltype(FL_NORMAL_LABEL);
  1465. inseffectuigroup->labelfont(0);
  1466. inseffectuigroup->labelsize(14);
  1467. inseffectuigroup->labelcolor(FL_FOREGROUND_COLOR);
  1468. inseffectuigroup->align(Fl_Align(FL_ALIGN_TOP));
  1469. inseffectuigroup->when(FL_WHEN_RELEASE);
  1470. { new Fl_Box(0, 0, 0, 0);
  1471. inseffectuigroup->ext = "partefx0/";
  1472. } // Fl_Box* o
  1473. { EffUI* o = inseffectui = new EffUI(5, 5, 380, 95);
  1474. inseffectui->box(FL_NO_BOX);
  1475. inseffectui->color(FL_BACKGROUND_COLOR);
  1476. inseffectui->selection_color(FL_BACKGROUND_COLOR);
  1477. inseffectui->labeltype(FL_NORMAL_LABEL);
  1478. inseffectui->labelfont(0);
  1479. inseffectui->labelsize(14);
  1480. inseffectui->labelcolor(FL_FOREGROUND_COLOR);
  1481. inseffectui->align(Fl_Align(FL_ALIGN_TOP));
  1482. inseffectui->when(FL_WHEN_RELEASE);
  1483. o->init(true);
  1484. inseffectui->end();
  1485. } // EffUI* inseffectui
  1486. inseffectuigroup->end();
  1487. } // Fl_Osc_Group* inseffectuigroup
  1488. { Fl_Button* o = new Fl_Button(325, 115, 60, 20, "Close");
  1489. o->box(FL_THIN_UP_BOX);
  1490. o->callback((Fl_Callback*)cb_Close1);
  1491. } // Fl_Button* o
  1492. { Fl_Osc_Choice* o = sendtochoice = new Fl_Osc_Choice(235, 110, 80, 15, "Send To.");
  1493. sendtochoice->box(FL_UP_BOX);
  1494. sendtochoice->down_box(FL_BORDER_BOX);
  1495. sendtochoice->color(FL_BACKGROUND_COLOR);
  1496. sendtochoice->selection_color(FL_SELECTION_COLOR);
  1497. sendtochoice->labeltype(FL_NORMAL_LABEL);
  1498. sendtochoice->labelfont(0);
  1499. sendtochoice->labelsize(10);
  1500. sendtochoice->labelcolor(FL_FOREGROUND_COLOR);
  1501. sendtochoice->callback((Fl_Callback*)cb_sendtochoice);
  1502. sendtochoice->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT));
  1503. sendtochoice->when(FL_WHEN_RELEASE);
  1504. sendtochoice->menu(menu_sendtochoice);
  1505. /*int x=part->Pefxroute[ninseff]; if (x==127) x=1;*/
  1506. o->init(("Pefxroute"+to_s(ninseff)).c_str());
  1507. } // Fl_Osc_Choice* sendtochoice
  1508. { Fl_Osc_Check* o = bypasseff = new Fl_Osc_Check(90, 110, 60, 15, "bypass");
  1509. bypasseff->tooltip("if the effect is not used (is bypassed)");
  1510. bypasseff->box(FL_NO_BOX);
  1511. bypasseff->down_box(FL_DOWN_BOX);
  1512. bypasseff->color(FL_BACKGROUND_COLOR);
  1513. bypasseff->selection_color(FL_FOREGROUND_COLOR);
  1514. bypasseff->labeltype(FL_NORMAL_LABEL);
  1515. bypasseff->labelfont(0);
  1516. bypasseff->labelsize(11);
  1517. bypasseff->labelcolor(FL_FOREGROUND_COLOR);
  1518. bypasseff->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1519. bypasseff->when(FL_WHEN_RELEASE);
  1520. o->init("Pefxbypass"+to_s(ninseff));
  1521. } // Fl_Osc_Check* bypasseff
  1522. { Fl_Button* o = new Fl_Button(90, 127, 25, 15, "C");
  1523. o->box(FL_THIN_UP_BOX);
  1524. o->color((Fl_Color)179);
  1525. o->labelfont(1);
  1526. o->labelsize(11);
  1527. o->labelcolor((Fl_Color)55);
  1528. o->callback((Fl_Callback*)cb_C);
  1529. } // Fl_Button* o
  1530. { Fl_Button* o = new Fl_Button(120, 127, 25, 15, "P");
  1531. o->box(FL_THIN_UP_BOX);
  1532. o->color((Fl_Color)179);
  1533. o->labelfont(1);
  1534. o->labelsize(11);
  1535. o->labelcolor((Fl_Color)55);
  1536. o->callback((Fl_Callback*)cb_P);
  1537. } // Fl_Button* o
  1538. partfx->end();
  1539. } // Fl_Osc_Window* partfx
  1540. { instrumentkitlist = new Fl_Osc_Window(670, 370, "Instrument Kit");
  1541. instrumentkitlist->box(FL_NO_BOX);
  1542. instrumentkitlist->color(FL_BACKGROUND_COLOR);
  1543. instrumentkitlist->selection_color(FL_BACKGROUND_COLOR);
  1544. instrumentkitlist->labeltype(FL_NO_LABEL);
  1545. instrumentkitlist->labelfont(0);
  1546. instrumentkitlist->labelsize(14);
  1547. instrumentkitlist->labelcolor(FL_FOREGROUND_COLOR);
  1548. instrumentkitlist->user_data((void*)(this));
  1549. instrumentkitlist->align(Fl_Align(FL_ALIGN_TOP));
  1550. instrumentkitlist->when(FL_WHEN_RELEASE);
  1551. { new Fl_Box(0, 0, 0, 0);
  1552. instrumentkitlist->init(osc, "/part"+to_s(npart)+"/");
  1553. } // Fl_Box* o
  1554. { Fl_Button* o = new Fl_Button(255, 350, 160, 20, "Close Window");
  1555. o->box(FL_THIN_UP_BOX);
  1556. o->callback((Fl_Callback*)cb_Close2);
  1557. } // Fl_Button* o
  1558. { kitlist = new Fl_Scroll(0, 15, 670, 330);
  1559. kitlist->type(2);
  1560. kitlist->box(FL_UP_FRAME);
  1561. { Fl_Pack* o = new Fl_Pack(0, 20, 670, 320);
  1562. for (int i=0;i<NUM_KIT_ITEMS;i++){partkititem[i]=new PartKitItem(0,0,670,20);partkititem[i]->init(i,this);}
  1563. o->end();
  1564. } // Fl_Pack* o
  1565. kitlist->end();
  1566. } // Fl_Scroll* kitlist
  1567. { Fl_Box* o = new Fl_Box(5, 0, 25, 15, "No.");
  1568. o->labelfont(1);
  1569. o->labelsize(11);
  1570. o->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
  1571. } // Fl_Box* o
  1572. { Fl_Box* o = new Fl_Box(55, 0, 25, 15, "M.");
  1573. o->labelfont(1);
  1574. o->labelsize(11);
  1575. o->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
  1576. } // Fl_Box* o
  1577. { Fl_Box* o = new Fl_Box(235, 0, 40, 15, "Min.k");
  1578. o->labelfont(1);
  1579. o->labelsize(11);
  1580. o->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
  1581. } // Fl_Box* o
  1582. { Fl_Box* o = new Fl_Box(345, 0, 40, 15, "Max.k");
  1583. o->labelfont(1);
  1584. o->labelsize(11);
  1585. o->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
  1586. } // Fl_Box* o
  1587. { Fl_Box* o = new Fl_Box(405, 0, 50, 15, "ADsynth");
  1588. o->labelfont(1);
  1589. o->labelsize(11);
  1590. o->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
  1591. } // Fl_Box* o
  1592. { Fl_Box* o = new Fl_Box(470, 0, 60, 15, "SUBsynth");
  1593. o->labelfont(1);
  1594. o->labelsize(11);
  1595. o->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
  1596. } // Fl_Box* o
  1597. { Fl_Osc_Choice* o = new Fl_Osc_Choice(35, 350, 70, 15, "Mode");
  1598. o->box(FL_UP_BOX);
  1599. o->down_box(FL_BORDER_BOX);
  1600. o->color(FL_BACKGROUND_COLOR);
  1601. o->selection_color(FL_SELECTION_COLOR);
  1602. o->labeltype(FL_NORMAL_LABEL);
  1603. o->labelfont(0);
  1604. o->labelsize(11);
  1605. o->labelcolor(FL_FOREGROUND_COLOR);
  1606. o->textfont(1);
  1607. o->textsize(11);
  1608. o->callback((Fl_Callback*)cb_Mode);
  1609. o->align(Fl_Align(FL_ALIGN_LEFT));
  1610. o->when(FL_WHEN_RELEASE);
  1611. o->menu(menu_Mode);
  1612. o->init("Pkitmode");
  1613. } // Fl_Osc_Choice* o
  1614. { Fl_Osc_Check* o = new Fl_Osc_Check(125, 350, 80, 15, "Drum mode");
  1615. o->box(FL_NO_BOX);
  1616. o->down_box(FL_DOWN_BOX);
  1617. o->color(FL_BACKGROUND_COLOR);
  1618. o->selection_color(FL_FOREGROUND_COLOR);
  1619. o->labeltype(FL_NORMAL_LABEL);
  1620. o->labelfont(0);
  1621. o->labelsize(10);
  1622. o->labelcolor(FL_FOREGROUND_COLOR);
  1623. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1624. o->when(FL_WHEN_RELEASE);
  1625. o->init("Pdrummode");
  1626. } // Fl_Osc_Check* o
  1627. { Fl_Button* o = new Fl_Button(481, 350, 106, 20, "Comments");
  1628. o->box(FL_THIN_UP_BOX);
  1629. o->callback((Fl_Callback*)cb_Comments);
  1630. } // Fl_Button* o
  1631. { Fl_Button* o = new Fl_Button(600, 350, 70, 20, "Effects");
  1632. o->box(FL_THIN_UP_BOX);
  1633. o->callback((Fl_Callback*)cb_Effects);
  1634. } // Fl_Button* o
  1635. { Fl_Box* o = new Fl_Box(620, 0, 30, 15, "FX.r.");
  1636. o->labelfont(1);
  1637. o->labelsize(11);
  1638. o->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
  1639. } // Fl_Box* o
  1640. { Fl_Box* o = new Fl_Box(540, 0, 60, 15, "PADsynth");
  1641. o->labelfont(1);
  1642. o->labelsize(11);
  1643. o->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
  1644. } // Fl_Box* o
  1645. instrumentkitlist->end();
  1646. } // Fl_Osc_Window* instrumentkitlist
  1647. { instrumenteditwindow = new Fl_Osc_Window(395, 360, "Instrument Edit");
  1648. instrumenteditwindow->box(FL_NO_BOX);
  1649. instrumenteditwindow->color(FL_BACKGROUND_COLOR);
  1650. instrumenteditwindow->selection_color(FL_BACKGROUND_COLOR);
  1651. instrumenteditwindow->labeltype(FL_NO_LABEL);
  1652. instrumenteditwindow->labelfont(0);
  1653. instrumenteditwindow->labelsize(14);
  1654. instrumenteditwindow->labelcolor(FL_FOREGROUND_COLOR);
  1655. instrumenteditwindow->user_data((void*)(this));
  1656. instrumenteditwindow->align(Fl_Align(FL_ALIGN_TOP));
  1657. instrumenteditwindow->when(FL_WHEN_RELEASE);
  1658. { new Fl_Box(0, 0, 0, 0);
  1659. instrumenteditwindow->init(osc, "/part"+to_s(npart)+"/");
  1660. } // Fl_Box* o
  1661. { editgroup = new Fl_Osc_Group(0, 220, 395, 110);
  1662. editgroup->box(FL_UP_FRAME);
  1663. editgroup->color(FL_BACKGROUND_COLOR);
  1664. editgroup->selection_color(FL_BACKGROUND_COLOR);
  1665. editgroup->labeltype(FL_NORMAL_LABEL);
  1666. editgroup->labelfont(0);
  1667. editgroup->labelsize(14);
  1668. editgroup->labelcolor(FL_FOREGROUND_COLOR);
  1669. editgroup->align(Fl_Align(FL_ALIGN_TOP));
  1670. editgroup->when(FL_WHEN_RELEASE);
  1671. { new Fl_Box(0, 220, 0, 0);
  1672. editgroup->ext = "kit0/";
  1673. } // Fl_Box* o
  1674. { Fl_Group* o = new Fl_Group(205, 245, 100, 80, "PADsynth");
  1675. o->box(FL_ENGRAVED_FRAME);
  1676. o->labelfont(1);
  1677. { padeditbutton = new Fl_Button(215, 280, 80, 35, "Edit");
  1678. padeditbutton->color((Fl_Color)51);
  1679. padeditbutton->selection_color((Fl_Color)51);
  1680. padeditbutton->labelfont(1);
  1681. padeditbutton->labelsize(13);
  1682. padeditbutton->callback((Fl_Callback*)cb_padeditbutton1);
  1683. padeditbutton->align(Fl_Align(FL_ALIGN_WRAP));
  1684. } // Fl_Button* padeditbutton
  1685. { Fl_Osc_Check* o = padsynenabledcheck = new Fl_Osc_Check(215, 255, 80, 20, "Enabled");
  1686. padsynenabledcheck->tooltip("enable/disable PADsynth");
  1687. padsynenabledcheck->box(FL_UP_BOX);
  1688. padsynenabledcheck->down_box(FL_DOWN_BOX);
  1689. padsynenabledcheck->color((Fl_Color)51);
  1690. padsynenabledcheck->selection_color(FL_FOREGROUND_COLOR);
  1691. padsynenabledcheck->labeltype(FL_NORMAL_LABEL);
  1692. padsynenabledcheck->labelfont(1);
  1693. padsynenabledcheck->labelsize(11);
  1694. padsynenabledcheck->labelcolor(FL_FOREGROUND_COLOR);
  1695. padsynenabledcheck->callback((Fl_Callback*)cb_padsynenabledcheck);
  1696. padsynenabledcheck->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1697. padsynenabledcheck->when(FL_WHEN_RELEASE);
  1698. o->init("Ppadenabled");
  1699. } // Fl_Osc_Check* padsynenabledcheck
  1700. o->end();
  1701. } // Fl_Group* o
  1702. { Fl_Group* o = new Fl_Group(5, 245, 100, 80, "ADsynth");
  1703. o->box(FL_ENGRAVED_FRAME);
  1704. o->labelfont(1);
  1705. { Fl_Osc_Check* o = adsynenabledcheck = new Fl_Osc_Check(15, 255, 80, 20, "Enabled");
  1706. adsynenabledcheck->tooltip("enable/disable ADsynth");
  1707. adsynenabledcheck->box(FL_UP_BOX);
  1708. adsynenabledcheck->down_box(FL_DOWN_BOX);
  1709. adsynenabledcheck->color((Fl_Color)51);
  1710. adsynenabledcheck->selection_color(FL_FOREGROUND_COLOR);
  1711. adsynenabledcheck->labeltype(FL_NORMAL_LABEL);
  1712. adsynenabledcheck->labelfont(1);
  1713. adsynenabledcheck->labelsize(11);
  1714. adsynenabledcheck->labelcolor(FL_FOREGROUND_COLOR);
  1715. adsynenabledcheck->callback((Fl_Callback*)cb_adsynenabledcheck);
  1716. adsynenabledcheck->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1717. adsynenabledcheck->when(FL_WHEN_RELEASE);
  1718. o->init("Padenabled");
  1719. } // Fl_Osc_Check* adsynenabledcheck
  1720. { adeditbutton = new Fl_Button(15, 281, 80, 34, "Edit");
  1721. adeditbutton->color((Fl_Color)51);
  1722. adeditbutton->selection_color((Fl_Color)51);
  1723. adeditbutton->labelfont(1);
  1724. adeditbutton->labelsize(13);
  1725. adeditbutton->callback((Fl_Callback*)cb_adeditbutton1);
  1726. adeditbutton->align(Fl_Align(FL_ALIGN_WRAP));
  1727. } // Fl_Button* adeditbutton
  1728. o->end();
  1729. } // Fl_Group* o
  1730. { Fl_Group* o = new Fl_Group(105, 245, 100, 80, "SUBsynth");
  1731. o->box(FL_ENGRAVED_FRAME);
  1732. o->labelfont(1);
  1733. { Fl_Osc_Check* o = subsynenabledcheck = new Fl_Osc_Check(115, 255, 80, 20, "Enabled");
  1734. subsynenabledcheck->tooltip("enable/disable SUBsynth");
  1735. subsynenabledcheck->box(FL_UP_BOX);
  1736. subsynenabledcheck->down_box(FL_DOWN_BOX);
  1737. subsynenabledcheck->color((Fl_Color)51);
  1738. subsynenabledcheck->selection_color(FL_FOREGROUND_COLOR);
  1739. subsynenabledcheck->labeltype(FL_NORMAL_LABEL);
  1740. subsynenabledcheck->labelfont(1);
  1741. subsynenabledcheck->labelsize(11);
  1742. subsynenabledcheck->labelcolor(FL_FOREGROUND_COLOR);
  1743. subsynenabledcheck->callback((Fl_Callback*)cb_subsynenabledcheck);
  1744. subsynenabledcheck->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  1745. subsynenabledcheck->when(FL_WHEN_RELEASE);
  1746. o->init("Psubenabled");
  1747. } // Fl_Osc_Check* subsynenabledcheck
  1748. { subeditbutton = new Fl_Button(115, 280, 80, 35, "Edit");
  1749. subeditbutton->color((Fl_Color)51);
  1750. subeditbutton->selection_color((Fl_Color)51);
  1751. subeditbutton->labelfont(1);
  1752. subeditbutton->labelsize(13);
  1753. subeditbutton->callback((Fl_Callback*)cb_subeditbutton1);
  1754. subeditbutton->align(Fl_Align(FL_ALIGN_WRAP));
  1755. } // Fl_Button* subeditbutton
  1756. o->end();
  1757. } // Fl_Group* o
  1758. { Fl_Button* o = new Fl_Button(310, 245, 80, 35, "Kit Edit");
  1759. o->color((Fl_Color)51);
  1760. o->selection_color((Fl_Color)51);
  1761. o->labelfont(1);
  1762. o->callback((Fl_Callback*)cb_Kit);
  1763. o->align(Fl_Align(FL_ALIGN_WRAP));
  1764. } // Fl_Button* o
  1765. { Fl_Button* o = new Fl_Button(310, 290, 80, 35, "Effects");
  1766. o->color((Fl_Color)51);
  1767. o->selection_color((Fl_Color)51);
  1768. o->labelfont(1);
  1769. o->labelsize(13);
  1770. o->callback((Fl_Callback*)cb_Effects1);
  1771. } // Fl_Button* o
  1772. editgroup->end();
  1773. } // Fl_Osc_Group* editgroup
  1774. { Fl_Group* o = new Fl_Group(0, 5, 395, 215);
  1775. o->box(FL_UP_FRAME);
  1776. { Fl_Osc_Input* o = new Fl_Osc_Input(5, 60, 385, 50, "Author and Copyright");
  1777. o->type(4);
  1778. o->box(FL_DOWN_BOX);
  1779. o->color((Fl_Color)124);
  1780. o->selection_color(FL_SELECTION_COLOR);
  1781. o->labeltype(FL_NORMAL_LABEL);
  1782. o->labelfont(0);
  1783. o->labelsize(10);
  1784. o->labelcolor(FL_FOREGROUND_COLOR);
  1785. o->callback((Fl_Callback*)cb_Author);
  1786. o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  1787. o->when(FL_WHEN_RELEASE);
  1788. o->maximum_size(MAX_INFO_TEXT_SIZE);
  1789. o->init("info.Pauthor");
  1790. } // Fl_Osc_Input* o
  1791. { Fl_Osc_Input* o = new Fl_Osc_Input(5, 125, 385, 90, "Comments");
  1792. o->type(4);
  1793. o->box(FL_DOWN_BOX);
  1794. o->color((Fl_Color)124);
  1795. o->selection_color(FL_SELECTION_COLOR);
  1796. o->labeltype(FL_NORMAL_LABEL);
  1797. o->labelfont(0);
  1798. o->labelsize(11);
  1799. o->labelcolor(FL_FOREGROUND_COLOR);
  1800. o->callback((Fl_Callback*)cb_Comments1);
  1801. o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  1802. o->when(FL_WHEN_RELEASE);
  1803. o->maximum_size(MAX_INFO_TEXT_SIZE);
  1804. o->init("info.Pcomments");
  1805. } // Fl_Osc_Input* o
  1806. { Fl_Osc_Choice* o = new Fl_Osc_Choice(5, 25, 155, 20, "Type:");
  1807. o->box(FL_UP_BOX);
  1808. o->down_box(FL_BORDER_BOX);
  1809. o->color(FL_BACKGROUND_COLOR);
  1810. o->selection_color(FL_SELECTION_COLOR);
  1811. o->labeltype(FL_NORMAL_LABEL);
  1812. o->labelfont(1);
  1813. o->labelsize(11);
  1814. o->labelcolor(FL_FOREGROUND_COLOR);
  1815. o->textsize(10);
  1816. o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  1817. o->when(FL_WHEN_RELEASE);
  1818. o->menu(menu_Type);
  1819. o->init("info.Ptype");
  1820. } // Fl_Osc_Choice* o
  1821. o->end();
  1822. } // Fl_Group* o
  1823. { Fl_Button* o = new Fl_Button(150, 335, 95, 25, "Close");
  1824. o->box(FL_THIN_UP_BOX);
  1825. o->callback((Fl_Callback*)cb_Close3);
  1826. } // Fl_Button* o
  1827. instrumenteditwindow->end();
  1828. } // Fl_Osc_Window* instrumenteditwindow
  1829. return instrumenteditwindow;
  1830. }
  1831. PartUI::PartUI(int x,int y, int w, int h, const char *label):Fl_Osc_Group(x,y,w,h,label) {
  1832. adnoteui=NULL;
  1833. subnoteui=NULL;
  1834. padnoteui=NULL;
  1835. lastkititem=-1;
  1836. }
  1837. void PartUI::init(std::string part_path_, int npart_,BankUI *bankui_, std::string loc_, Fl_Osc_Interface *osc_) {
  1838. assert(osc_);
  1839. assert(!loc_.empty());
  1840. bankui=bankui_;
  1841. part_path = part_path_;
  1842. base = part_path;
  1843. npart=npart_;
  1844. ninseff=0;
  1845. osc=osc_;
  1846. loc=loc_;
  1847. make_window();
  1848. #ifdef NTK_GUI
  1849. adsynenabledcheck->selection_color(55);
  1850. subsynenabledcheck->selection_color(55);
  1851. padsynenabledcheck->selection_color(55);
  1852. #endif
  1853. partgroup->position(this->parent()->x()+2,this->parent()->y()+2);
  1854. partgroup->show();
  1855. end();
  1856. //if (config.ui.showinstrumentinfo!=0) instrumenteditwindow->show();
  1857. }
  1858. int PartUI::cleanuplastkit(int kititem) {
  1859. if (kititem==lastkititem)
  1860. return 0;
  1861. delete adnoteui;
  1862. delete subnoteui;
  1863. delete padnoteui;
  1864. adnoteui=NULL;subnoteui=NULL;padnoteui=NULL;
  1865. lastkititem=kititem;
  1866. if(kititem>=NUM_KIT_ITEMS) return 1;//bad kit item
  1867. if(kititem<0) return 1;
  1868. return 0;
  1869. }
  1870. void PartUI::showparameters(int kititem,int engine) {
  1871. if (engine==-1){//this is used if I want to clear the engine from the part
  1872. //if (kititem==lastkititem) kititem=-1;
  1873. //else kititem=lastkititem;
  1874. delete adnoteui;
  1875. delete subnoteui;
  1876. delete padnoteui;
  1877. adnoteui=NULL;subnoteui=NULL;padnoteui=NULL;
  1878. return;
  1879. }
  1880. if (cleanuplastkit(kititem))
  1881. return;
  1882. if(!adnoteui && engine==0)//adsynenabledcheck->value())
  1883. adnoteui=new ADnoteUI(loc+"kit"+to_s(kititem)+"/adpars/", osc);
  1884. if(!subnoteui && engine==1)//subsynenabledcheck->value())
  1885. subnoteui=new SUBnoteUI(osc, loc+"kit"+to_s(kititem)+"/subpars/");
  1886. if(!padnoteui && engine==2)//padsynenabledcheck->value())
  1887. padnoteui=new PADnoteUI(loc+"kit"+to_s(kititem)+"/padpars/", osc);
  1888. if (engine==0&&adnoteui) adnoteui->ADnoteGlobalParameters->show();
  1889. if (engine==1&&subnoteui) subnoteui->SUBparameters->show();
  1890. if (engine==2&&padnoteui) padnoteui->padnotewindow->show();
  1891. }
  1892. void PartUI::showvoiceparams(int kititem, bool voicelist) {
  1893. if (cleanuplastkit(kititem))
  1894. return;
  1895. if(adnoteui ||
  1896. (adnoteui=new ADnoteUI(loc+"kit"+to_s(kititem)+"/adpars/", osc))) {
  1897. if(voicelist)
  1898. adnoteui->ADnoteVoiceList->show();
  1899. else {
  1900. if (adnoteui->advoice->mod_type->value() == 0)
  1901. adnoteui->advoice->voiceFMparametersgroup->deactivate();
  1902. else
  1903. adnoteui->advoice->voiceFMparametersgroup->activate();
  1904. adnoteui->ADnoteVoice->show();
  1905. }}
  1906. }
  1907. PartUI::~PartUI() {
  1908. delete adnoteui;
  1909. delete subnoteui;
  1910. delete padnoteui;
  1911. partgroup->hide();
  1912. //delete(partgroup);
  1913. ctlwindow->hide();
  1914. delete(ctlwindow);
  1915. partfx->hide();
  1916. delete(partfx);
  1917. instrumentkitlist->hide();
  1918. delete(instrumentkitlist);
  1919. instrumenteditwindow->hide();
  1920. delete(instrumenteditwindow);
  1921. }
  1922. void PartUI::rebase(std::string new_loc) {
  1923. loc = new_loc;
  1924. partgroupui->rebase(new_loc);
  1925. ctlwindow->rebase(new_loc+"ctl/");
  1926. partfx->rebase(new_loc);
  1927. instrumentkitlist->rebase(new_loc);
  1928. instrumenteditwindow->rebase(new_loc);
  1929. partenablebutton->rebase(new_loc);
  1930. int next_part = 0;
  1931. const char *tmp = new_loc.c_str();
  1932. while(*tmp && !isdigit(*tmp)) tmp++;
  1933. next_part = atoi(tmp);
  1934. for (int i=0;i<NUM_SYS_EFX;i++)
  1935. psyef[i]->rebase(next_part);
  1936. }