Audio plugin host https://kx.studio/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.

1873 lines
66KB

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