Collection of tools useful for audio production
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.

1142 lines
39KB

  1. # data file for the Fltk User Interface Designer (fluid)
  2. version 1.0300
  3. header_name {.h}
  4. code_name {.cc}
  5. decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {private local
  6. }
  7. decl {//License: GNU GPL version 2 or later} {private local
  8. }
  9. decl {\#include <stdlib.h>} {public local
  10. }
  11. decl {\#include <stdio.h>} {public local
  12. }
  13. decl {\#include <string.h>} {public local
  14. }
  15. decl {\#include "WidgetPDial.h"} {public local
  16. }
  17. decl {\#include "EffUI.h"} {public local
  18. }
  19. decl {\#include "BankUI.h"} {public local
  20. }
  21. decl {\#include "ADnoteUI.h"} {public local
  22. }
  23. decl {\#include "SUBnoteUI.h"} {public local
  24. }
  25. decl {\#include "PADnoteUI.h"} {public local
  26. }
  27. decl {\#include "../Misc/Config.h"} {public local
  28. }
  29. decl {\#include "../Misc/Master.h"} {public local
  30. }
  31. decl {\#include "../Misc/Part.h"} {public local
  32. }
  33. class PartSysEffSend {open : {public Fl_Group}
  34. } {
  35. Function {make_window()} {open private
  36. } {
  37. Fl_Window syseffsend {
  38. private xywh {586 106 100 100} type Double box NO_BOX
  39. class Fl_Group visible
  40. } {
  41. Fl_Dial {} {
  42. label 01
  43. callback {master->setPsysefxvol(npart,neff,(int) o->value());}
  44. xywh {0 0 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 align 130 maximum 127 step 1
  45. code0 {o->size(25,25);}
  46. code1 {o->value(master->Psysefxvol[neff][npart]);}
  47. code2 {char tmp[10];snprintf(tmp,10,"%d",neff+1);o->copy_label(tmp);}
  48. class WidgetPDial
  49. }
  50. }
  51. }
  52. Function {PartSysEffSend(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
  53. code {master=NULL;
  54. neff=0;
  55. npart=0;} {}
  56. }
  57. Function {init(Master *master_,int npart_,int neff_)} {} {
  58. code {npart=npart_;
  59. neff=neff_;
  60. master=master_;
  61. make_window();
  62. syseffsend->show();
  63. end();} {}
  64. }
  65. Function {~PartSysEffSend()} {} {
  66. code {syseffsend->hide();
  67. //delete(syseffsend);} {}
  68. }
  69. decl {Master *master;} {private local
  70. }
  71. decl {int neff;} {private local
  72. }
  73. decl {int npart;} {private local
  74. }
  75. }
  76. class PartKitItem {open : {public Fl_Group}
  77. } {
  78. Function {make_window()} {open private
  79. } {
  80. Fl_Window partkititem {
  81. private xywh {470 383 670 100} type Double box NO_BOX
  82. class Fl_Group visible
  83. } {
  84. Fl_Group partkititemgroup {
  85. private xywh {55 0 605 20}
  86. code0 {if (part->kit[n].Penabled==0) o->deactivate();}
  87. } {
  88. Fl_Counter minkcounter {
  89. callback {part->kit[n].Pminkey=(int)o->value();}
  90. xywh {225 0 55 15} type Simple minimum 0 maximum 128 step 1
  91. code0 {o->value(part->kit[n].Pminkey);}
  92. }
  93. Fl_Button {} {
  94. label m
  95. callback {if (part->lastnote>=0) minkcounter->value(part->lastnote);
  96. minkcounter->do_callback();
  97. maxkcounter->do_callback();}
  98. tooltip {set the minimum key to the last pressed key} xywh {285 3 15 12} box THIN_UP_BOX labelsize 10
  99. }
  100. Fl_Button {} {
  101. label M
  102. callback {if (part->lastnote>=0) maxkcounter->value(part->lastnote);
  103. maxkcounter->do_callback();
  104. minkcounter->do_callback();}
  105. tooltip {set the maximum key to the last pressed key} xywh {315 3 15 12} box THIN_UP_BOX labelsize 10
  106. }
  107. Fl_Button {} {
  108. label R
  109. callback {minkcounter->value(0);
  110. minkcounter->do_callback();
  111. maxkcounter->value(127);
  112. maxkcounter->do_callback();}
  113. tooltip {reset the minimum key to 0 and maximum key to 127} xywh {300 3 15 12} box THIN_UP_BOX labelfont 1 labelsize 10
  114. }
  115. Fl_Button adeditbutton {
  116. label edit
  117. callback {partui->showparameters(n,0);}
  118. xywh {420 0 40 15} box THIN_UP_BOX labelsize 11
  119. code0 {if (part->kit[n].Padenabled==0) o->deactivate();}
  120. code1 {if (n==0) o->hide();}
  121. }
  122. Fl_Button subeditbutton {
  123. label edit
  124. callback {partui->showparameters(n,1);}
  125. xywh {490 0 40 15} box THIN_UP_BOX labelsize 11
  126. code0 {if (part->kit[n].Psubenabled==0) o->deactivate();}
  127. code1 {if (n==0) o->hide();}
  128. }
  129. Fl_Check_Button mutedcheck {
  130. callback {part->kit[n].Pmuted=(int)o->value();}
  131. private xywh {60 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 11 align 4
  132. code0 {o->value(part->kit[n].Pmuted);}
  133. }
  134. Fl_Counter maxkcounter {
  135. callback {part->kit[n].Pmaxkey=(int)o->value();}
  136. xywh {335 0 55 15} type Simple minimum 0 maximum 128 step 1
  137. code0 {o->value(part->kit[n].Pmaxkey);}
  138. }
  139. Fl_Button labelbutton {
  140. label {Bass Drum}
  141. callback {const char *tmp=fl_input("Kit item name:",(const char *)part->kit[n].Pname);
  142. if (tmp!=NULL) snprintf((char *)part->kit[n].Pname,PART_MAX_NAME_LEN,"%s",tmp);}
  143. xywh {90 0 130 15} box THIN_DOWN_BOX down_box FLAT_BOX labelfont 1 labelsize 10 align 20
  144. code0 {o->label((char *)part->kit[n].Pname);}
  145. }
  146. Fl_Check_Button adcheck {
  147. callback {part->kit[n].Padenabled=(int)o->value();
  148. if (part->kit[n].Padenabled!=0) adeditbutton->activate();
  149. else adeditbutton->deactivate();}
  150. private xywh {400 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 11 align 4
  151. code0 {o->value(part->kit[n].Padenabled);}
  152. code1 {if (n==0) o->hide();}
  153. }
  154. Fl_Check_Button subcheck {
  155. callback {part->kit[n].Psubenabled=(int)o->value();
  156. if (part->kit[n].Psubenabled!=0) subeditbutton->activate();
  157. else subeditbutton->deactivate();}
  158. private xywh {470 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 11 align 4
  159. code0 {o->value(part->kit[n].Psubenabled);}
  160. code1 {if (n==0) o->hide();}
  161. }
  162. Fl_Choice sendtoeffect {
  163. callback {if (o->value()!=0) part->kit[n].Psendtoparteffect=(int)o->value()-1;
  164. else part->kit[n].Psendtoparteffect=127;} open
  165. xywh {615 0 45 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
  166. code0 {o->add("OFF");char nrstr[10]; for(int i=0;i<NUM_PART_EFX;i++){sprintf(nrstr,"FX%d",i+1);o->add(nrstr);};}
  167. code1 {o->value(part->kit[n].Psendtoparteffect+1);if (part->kit[n].Psendtoparteffect==127) o->value(0);}
  168. } {}
  169. Fl_Button padeditbutton {
  170. label edit
  171. callback {partui->showparameters(n,2);}
  172. xywh {560 0 40 15} box THIN_UP_BOX labelsize 11
  173. code0 {if (part->kit[n].Ppadenabled==0) o->deactivate();}
  174. code1 {if (n==0) o->hide();}
  175. }
  176. Fl_Check_Button padcheck {
  177. callback {part->kit[n].Ppadenabled=(int)o->value();
  178. if (part->kit[n].Ppadenabled!=0) padeditbutton->activate();
  179. else padeditbutton->deactivate();}
  180. private xywh {540 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 11 align 4
  181. code0 {o->value(part->kit[n].Ppadenabled);}
  182. code1 {if (n==0) o->hide();}
  183. }
  184. }
  185. Fl_Check_Button enabledcheck {
  186. label 01
  187. callback {int answer=1;
  188. if (o->value()==0) answer=fl_choice("Delete the item?","No","Yes",NULL);
  189. if (answer!=0){
  190. pthread_mutex_lock(&master->mutex);
  191. part->setkititemstatus(n,(int) o->value());
  192. pthread_mutex_unlock(&master->mutex);
  193. if (o->value()==0) partkititemgroup->deactivate();
  194. else partkititemgroup->activate();
  195. o->redraw();
  196. partui->showparameters(n,-1);//use to delete the ui, if it is not to item 0
  197. } else o->value(1);}
  198. private xywh {30 0 20 15} down_box DOWN_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 13 align 4
  199. code0 {snprintf(label,10,"%d",n+1);o->label(label);}
  200. code1 {o->value(part->kit[n].Penabled);}
  201. code2 {if (n==0) o->deactivate();}
  202. }
  203. }
  204. }
  205. Function {PartKitItem(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
  206. code {n=0;
  207. part=NULL;} {}
  208. }
  209. Function {refresh()} {} {
  210. code {enabledcheck->value(part->kit[n].Penabled);
  211. if (part->kit[n].Penabled==0) partkititemgroup->deactivate();
  212. else partkititemgroup->activate();
  213. mutedcheck->value(part->kit[n].Pmuted);
  214. labelbutton->label((char *)part->kit[n].Pname);
  215. minkcounter->value(part->kit[n].Pminkey);
  216. maxkcounter->value(part->kit[n].Pmaxkey);
  217. adcheck->value(part->kit[n].Padenabled);
  218. adcheck->do_callback();
  219. subcheck->value(part->kit[n].Psubenabled);
  220. subcheck->do_callback();
  221. sendtoeffect->value(part->kit[n].Psendtoparteffect+1);
  222. if (part->kit[n].Psendtoparteffect==127) sendtoeffect->value(0);
  223. this->redraw();} {
  224. callback {int answer=1;
  225. if (o->value()==0) answer=fl_choice("Delete the item?","No","Yes",NULL);
  226. if (answer!=0){
  227. pthread_mutex_lock(&master->mutex);
  228. part->setkititemstatus(n,(int) o->value());
  229. pthread_mutex_unlock(&master->mutex);
  230. if (o->value()==0) partkititemgroup->deactivate();
  231. else partkititemgroup->activate();
  232. o->redraw();
  233. partui->showparameters(n,-1);//use to delete the ui, if it is not to item 0
  234. } else o->value(1);}
  235. }
  236. }
  237. Function {init(Part *part_,int n_,Master *master_,class PartUI *partui_)} {} {
  238. code {part=part_;
  239. n=n_;
  240. partui=partui_;
  241. master=master_;
  242. make_window();
  243. //partkititem->show();
  244. end();} {}
  245. }
  246. Function {~PartKitItem()} {} {
  247. code {partkititem->hide();
  248. //delete(partkititem);} {}
  249. }
  250. decl {Part *part;} {private local
  251. }
  252. decl {int n;} {private local
  253. }
  254. decl {Master *master;} {private local
  255. }
  256. decl {char label[10];} {private local
  257. }
  258. decl {class PartUI *partui;} {private local
  259. }
  260. }
  261. class PartUI {open : {public Fl_Group}
  262. } {
  263. Function {make_window()} {open private
  264. } {
  265. Fl_Window partgroup {open
  266. private xywh {685 241 385 180} type Double box NO_BOX
  267. class Fl_Group visible
  268. } {
  269. Fl_Group partgroupui {open
  270. xywh {0 0 385 180}
  271. code0 {if (part->Penabled==0) o->deactivate();}
  272. } {
  273. Fl_Dial {} {
  274. label Pan
  275. callback {part->setPpanning((int) o->value());}
  276. xywh {50 40 25 25} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
  277. code0 {o->value(part->Ppanning);}
  278. class WidgetPDial
  279. }
  280. Fl_Counter {} {
  281. label KeyShift
  282. callback {part->Pkeyshift=(int) o->value()+64;}
  283. xywh {195 45 90 20} labelsize 11 align 1 minimum -64 maximum 64 step 1
  284. code0 {o->lstep(12);}
  285. code1 {o->value(part->Pkeyshift-64);}
  286. }
  287. Fl_Scroll {} {open
  288. xywh {166 91 125 49} box UP_BOX labelfont 1 labelsize 10 align 21
  289. } {
  290. Fl_Pack {} {open
  291. xywh {171 96 115 35} type HORIZONTAL
  292. code0 {o->spacing(5);}
  293. code1 {for (int i=0;i<NUM_SYS_EFX;i++){psyef[i]=new PartSysEffSend(0,0,25,35,"");psyef[i]->init(master,npart,i);}}
  294. } {}
  295. }
  296. Fl_Button {} {
  297. label {Grand Piano}
  298. callback {int event=Fl::event_button();
  299. if (event==FL_RIGHT_MOUSE){
  300. const char *tmp=fl_input("Instrument name:",(const char *)part->Pname);
  301. if (tmp!=NULL) snprintf((char *)part->Pname,PART_MAX_NAME_LEN,"%s",tmp);
  302. } else {
  303. if (event==FL_LEFT_MOUSE) bankui->show();
  304. else instrumenteditwindow->show();
  305. };}
  306. tooltip {left mousebutton - to choose/save/.. from/to bank or right mousebutton to change the name or middle button to change the instrument information} xywh {195 5 185 20} box UP_FRAME down_box DOWN_FRAME labelfont 1 labelsize 11 align 84
  307. code0 {o->label((char *)part->Pname);}
  308. }
  309. Fl_Box {} {
  310. label {To Sys.Efx.}
  311. xywh {166 81 95 10} labelfont 1 labelsize 10
  312. }
  313. Fl_Check_Button {} {
  314. label NoteOn
  315. callback {part->Pnoteon=(int) o->value();}
  316. tooltip {set if the part receives NoteOn messages} xywh {10 155 65 20} down_box DOWN_BOX labelfont 1 labelsize 11
  317. code0 {o->value(part->Pnoteon);}
  318. }
  319. Fl_Counter minkcounter {
  320. label {Min.k}
  321. callback {part->Pminkey=(int) o->value();
  322. if (part->Pminkey>part->Pmaxkey) o->textcolor(FL_RED);
  323. else o->textcolor(FL_BLACK);}
  324. tooltip {Minimum key (that the part receives NoteOn messages)} xywh {295 125 40 15} type Simple labelfont 1 labelsize 10 minimum 0 maximum 127 step 1 textsize 10
  325. code0 {o->value(part->Pminkey);}
  326. }
  327. Fl_Counter maxkcounter {
  328. label {Max.k}
  329. callback {part->Pmaxkey=(int) o->value();
  330. if (part->Pminkey>part->Pmaxkey) o->textcolor(FL_RED);
  331. else o->textcolor(FL_BLACK);}
  332. tooltip {Maximum key (that the part receives NoteOn messages)} xywh {340 125 40 15} type Simple labelfont 1 labelsize 10 minimum 0 maximum 127 step 1 textsize 10
  333. code0 {o->value(part->Pmaxkey);}
  334. }
  335. Fl_Dial {} {
  336. label Volume
  337. callback {part->setPvolume((int) o->value());}
  338. tooltip {Part Volume} xywh {10 35 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
  339. code0 {o->value(part->Pvolume);}
  340. class WidgetPDial
  341. }
  342. Fl_Dial {} {
  343. label {Vel.Ofs.}
  344. callback {part->Pveloffs=(int) o->value();}
  345. tooltip {Velocity Offset} xywh {135 40 25 25} box ROUND_UP_BOX labelsize 10 maximum 127 step 1
  346. code0 {o->value(part->Pveloffs);}
  347. class WidgetPDial
  348. }
  349. Fl_Dial {} {
  350. label {Vel.Sns.}
  351. callback {part->Pvelsns=(int) o->value();}
  352. tooltip {Velocity Sensing Function} xywh {95 40 25 25} box ROUND_UP_BOX labelsize 10 maximum 127 step 1
  353. code0 {o->value(part->Pvelsns);}
  354. class WidgetPDial
  355. }
  356. Fl_Button {} {
  357. label Controllers
  358. callback {ctlwindow->show();}
  359. xywh {295 90 85 30} labelfont 1 labelsize 11
  360. }
  361. Fl_Check_Button {} {
  362. label Portamento
  363. callback {part->ctl.portamento.portamento=(int) o->value();}
  364. tooltip {Enable/Disable the portamento} xywh {95 155 88 20} down_box DOWN_BOX labelfont 1 labelsize 11
  365. code0 {o->value(part->ctl.portamento.portamento);}
  366. }
  367. Fl_Button {} {
  368. label {Edit instrument}
  369. callback {instrumenteditwindow->show();}
  370. xywh {15 90 130 30} color 52 labelfont 1 labelsize 13
  371. }
  372. Fl_Button {} {
  373. label m
  374. callback {if (part->lastnote>=0) minkcounter->value(part->lastnote);
  375. minkcounter->do_callback();
  376. maxkcounter->do_callback();}
  377. tooltip {set the minimum key to the last pressed key} xywh {315 155 15 12} box THIN_UP_BOX labelsize 10
  378. }
  379. Fl_Button {} {
  380. label M
  381. callback {if (part->lastnote>=0) maxkcounter->value(part->lastnote);
  382. maxkcounter->do_callback();
  383. minkcounter->do_callback();}
  384. tooltip {set the maximum key to the last pressed key} xywh {345 155 15 12} box THIN_UP_BOX labelsize 10
  385. }
  386. Fl_Button {} {
  387. label R
  388. callback {minkcounter->value(0);
  389. minkcounter->do_callback();
  390. maxkcounter->value(127);
  391. maxkcounter->do_callback();}
  392. tooltip {reset the minimum key to 0 and maximum key to 127} xywh {330 155 15 12} box THIN_UP_BOX labelfont 1 labelsize 10
  393. }
  394. Fl_Choice {} {
  395. label {MIDI Chn.Rcv.}
  396. callback {part->Prcvchn=(int) o->value();} open
  397. tooltip {receive from Midi channel} xywh {310 45 70 20} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
  398. code0 {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");};}
  399. code1 {o->value(part->Prcvchn);}
  400. } {}
  401. Fl_Choice keylimitlist {
  402. label KLmt
  403. callback {int val=0;
  404. val=atoi(o->text());
  405. part->setkeylimit(val);} open
  406. tooltip {Key Limit} xywh {215 155 50 20} down_box BORDER_BOX labelsize 10 align 8 textfont 1 textsize 10
  407. } {}
  408. Fl_Choice {} {
  409. label {Mode :}
  410. callback {if ((int) o->value()==0){ /* Poly (implies no legato) */
  411. part->Ppolymode=1;
  412. part->Plegatomode=0;
  413. } else {
  414. if ((int) o->value()==1){ /* Mono (implies no legato) */
  415. part->Ppolymode=0;
  416. part->Plegatomode=0;
  417. } else {
  418. if ((int) o->value()==2){ /* Legato (implies mono) */
  419. part->Ppolymode=0;
  420. part->Plegatomode=1;
  421. };
  422. };
  423. };} open
  424. tooltip {Poly, Mono or Legato mode} xywh {80 130 64 18} down_box BORDER_BOX labelfont 1 labelsize 11 textfont 1 textsize 10
  425. code0 {o->add("Poly"); o->add("Mono"); o->add("Legato");}
  426. code1 {if (part->Ppolymode!=0) o->value(0); else o->value(1);}
  427. code2 {if (part->Ppolymode==0 && part->Plegatomode!=0) o->value(2);}
  428. } {}
  429. }
  430. Fl_Check_Button {} {
  431. label Enabled
  432. callback {pthread_mutex_lock(&master->mutex);
  433. master->partonoff(npart,(int) o->value());
  434. pthread_mutex_unlock(&master->mutex);
  435. if (part->Penabled==0) partgroupui->deactivate();
  436. else partgroupui->activate();}
  437. xywh {90 5 75 20} down_box DOWN_BOX labelfont 1 labelsize 11
  438. code0 {o->value(part->Penabled);}
  439. }
  440. }
  441. Fl_Window ctlwindow {
  442. label Controllers open
  443. private xywh {779 238 500 130} type Double box NO_BOX visible
  444. } {
  445. Fl_Check_Button {} {
  446. label Expr
  447. callback {part->ctl.expression.receive=(int) o->value();}
  448. tooltip {Expression enable} xywh {155 55 45 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  449. code0 {o->value(part->ctl.expression.receive);}
  450. }
  451. Fl_Dial {} {
  452. label PanDpth
  453. callback {part->ctl.panning.depth=(int) o->value();}
  454. tooltip {Panning Depth} xywh {10 55 30 30} labelsize 10 maximum 127 step 1
  455. code0 {o->value(part->ctl.panning.depth);}
  456. class WidgetPDial
  457. }
  458. Fl_Dial {} {
  459. label FltCut
  460. callback {part->ctl.filtercutoff.depth=(int) o->value();}
  461. tooltip {Filter Cutoff depth} xywh {90 55 30 30} labelsize 10 maximum 127 step 1
  462. code0 {o->value(part->ctl.filtercutoff.depth);}
  463. class WidgetPDial
  464. }
  465. Fl_Dial {} {
  466. label FltQ
  467. callback {part->ctl.filterq.depth=(int) o->value();}
  468. tooltip {Filter Q depth} xywh {50 55 30 30} labelsize 10 maximum 127 step 1
  469. code0 {o->value(part->ctl.filterq.depth);}
  470. class WidgetPDial
  471. }
  472. Fl_Dial {} {
  473. label BwDpth
  474. callback {part->ctl.bandwidth.depth=(int) o->value();}
  475. tooltip {BandWidth depth} xywh {125 10 30 30} labelsize 10 maximum 127 step 1
  476. code0 {o->value(part->ctl.bandwidth.depth);}
  477. class WidgetPDial
  478. }
  479. Fl_Dial {} {
  480. label ModWh
  481. callback {part->ctl.modwheel.depth=(int) o->value();}
  482. tooltip {Modulation Wheel depth} xywh {50 10 30 30} labelsize 10 maximum 127 step 1
  483. code0 {o->value(part->ctl.modwheel.depth);}
  484. class WidgetPDial
  485. }
  486. Fl_Counter {} {
  487. label {PWheelB.Rng (cents)}
  488. callback {part->ctl.pitchwheel.bendrange=(int) o->value();}
  489. tooltip {Pitch Wheel Bend Range (cents)} xywh {165 15 110 20} labelsize 10 align 1 minimum -6400 maximum 6400 step 1
  490. code0 {o->value(part->ctl.pitchwheel.bendrange);}
  491. code1 {o->lstep(100);}
  492. }
  493. Fl_Check_Button {} {
  494. label FMamp
  495. callback {part->ctl.fmamp.receive=(int) o->value();}
  496. tooltip {FM amplitude enable} xywh {205 55 60 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  497. code0 {o->value(part->ctl.fmamp.receive);}
  498. }
  499. Fl_Check_Button {} {
  500. label Vol
  501. callback {part->ctl.volume.receive=(int) o->value();}
  502. tooltip {Volume enable} xywh {155 80 45 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  503. code0 {o->value(part->ctl.volume.receive);}
  504. }
  505. Fl_Check_Button {} {
  506. label Sustain
  507. callback {part->ctl.sustain.receive=(int) o->value();
  508. if (part->ctl.sustain.receive==0) {
  509. part->RelaseSustainedKeys();
  510. part->ctl.setsustain(0);
  511. };}
  512. tooltip {Sustain pedal enable} xywh {205 80 60 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  513. code0 {o->value(part->ctl.sustain.receive);}
  514. }
  515. Fl_Button {} {
  516. label Close
  517. callback {ctlwindow->hide();}
  518. xywh {400 107 95 20} box THIN_UP_BOX
  519. }
  520. Fl_Button {} {
  521. label {Reset all controllers}
  522. callback {part->SetController(C_resetallcontrollers,0);}
  523. xywh {5 107 210 20} box THIN_UP_BOX
  524. }
  525. Fl_Group {} {
  526. label Portamento
  527. xywh {280 15 160 90} box UP_FRAME labelsize 10
  528. } {
  529. Fl_Check_Button {} {
  530. label Rcv
  531. callback {part->ctl.portamento.receive=(int) o->value();}
  532. tooltip {Receive Portamento Controllers} xywh {285 20 40 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  533. code0 {o->value(part->ctl.portamento.receive);}
  534. }
  535. Fl_Dial {} {
  536. label time
  537. callback {part->ctl.portamento.time=(int) o->value();}
  538. tooltip {Portamento time} xywh {285 60 25 25} labelsize 10 maximum 127 step 1
  539. code0 {o->value(part->ctl.portamento.time);}
  540. class WidgetPDial
  541. }
  542. Fl_Counter {} {
  543. label thresh
  544. callback {part->ctl.portamento.pitchthresh=(int) o->value();}
  545. tooltip {Minimum or max. difference of the notes in order to do the portamento (x 100 cents)} xywh {340 20 50 20} type Simple labelsize 10 minimum 0 maximum 127 step 1
  546. code0 {o->value(part->ctl.portamento.pitchthresh);}
  547. }
  548. Fl_Check_Button {} {
  549. label {th.type}
  550. callback {part->ctl.portamento.pitchthreshtype=(int) o->value();}
  551. tooltip {Threshold type (min/max)} xywh {365 70 15 15} down_box DOWN_BOX labelsize 10 align 2
  552. code0 {o->value(part->ctl.portamento.pitchthreshtype);}
  553. }
  554. Fl_Box {} {
  555. label {x100 cnt.}
  556. xywh {340 50 55 15} labelsize 10 align 16
  557. }
  558. Fl_Dial {} {
  559. label {t.dn/up}
  560. callback {int x=(int) o->value();
  561. part->ctl.portamento.updowntimestretch=x;}
  562. tooltip {Portamento time stretch (up/down)} xywh {315 60 25 25} labelsize 10 maximum 127 step 1
  563. code0 {o->value(part->ctl.portamento.updowntimestretch);}
  564. class WidgetPDial
  565. }
  566. Fl_Dial propta {
  567. label {Prp.Rate}
  568. callback {part->ctl.portamento.propRate=(int) o->value();}
  569. tooltip {Distance required to double change from nonpropotinal portamento time} xywh {405 20 25 25} labelsize 9 maximum 127 step 1
  570. code0 {o->value(part->ctl.portamento.propRate);}
  571. class WidgetPDial
  572. }
  573. Fl_Dial proptb {
  574. label {Prp.Dpth}
  575. callback {part->ctl.portamento.propDepth=(int) o->value();}
  576. tooltip {The difference from nonproportinal portamento} xywh {405 60 25 25} labelsize 9 maximum 127 step 1
  577. code0 {o->value(part->ctl.portamento.propDepth);}
  578. class WidgetPDial
  579. }
  580. Fl_Check_Button {} {
  581. label {Proprt.}
  582. callback {part->ctl.portamento.proportional=(int) o->value();
  583. if(o->value()){propta->activate();proptb->activate();}
  584. else {propta->deactivate();proptb->deactivate();}}
  585. tooltip {Enable Proportinal Portamento (over fixed Portamento)} xywh {285 40 50 15} box THIN_UP_BOX down_box DOWN_BOX labelsize 9
  586. code0 {o->value(part->ctl.portamento.proportional);}
  587. code1 {if(o->value()){propta->activate();proptb->activate();}}
  588. code2 {else {propta->deactivate();proptb->deactivate();}}
  589. }
  590. }
  591. Fl_Group {} {
  592. label Resonance
  593. xywh {445 15 50 90} box UP_FRAME labelsize 10
  594. } {
  595. Fl_Dial {} {
  596. label BWdpth
  597. callback {part->ctl.resonancebandwidth.depth=(int) o->value();}
  598. tooltip {BandWidth controller depth} xywh {455 60 25 25} labelsize 10 maximum 127 step 1
  599. code0 {o->value(part->ctl.resonancebandwidth.depth);}
  600. class WidgetPDial
  601. }
  602. Fl_Dial {} {
  603. label CFdpth
  604. callback {part->ctl.resonancecenter.depth=(int) o->value();}
  605. tooltip {Center Frequency controller Depth} xywh {455 20 25 25} labelsize 10 maximum 127 step 1
  606. code0 {o->value(part->ctl.resonancecenter.depth);}
  607. class WidgetPDial
  608. }
  609. }
  610. Fl_Check_Button {} {
  611. label {Exp MWh}
  612. callback {part->ctl.modwheel.exponential=(int) o->value();}
  613. tooltip {Exponential modulation wheel} xywh {10 15 40 25} down_box DOWN_BOX labelsize 10 align 148
  614. code0 {o->value(part->ctl.modwheel.exponential);}
  615. }
  616. Fl_Check_Button {} {
  617. label {Exp BW}
  618. callback {part->ctl.bandwidth.exponential=(int) o->value();}
  619. tooltip {Exponential BandWidth Controller} xywh {85 15 35 25} down_box DOWN_BOX labelsize 10 align 148
  620. code0 {o->value(part->ctl.bandwidth.exponential);}
  621. }
  622. }
  623. Fl_Window partfx {
  624. label {Part's Insert Effects} selected
  625. private xywh {551 637 390 145} type Double box NO_BOX visible
  626. } {
  627. Fl_Counter inseffnocounter {
  628. label {FX No.}
  629. callback {ninseff=(int) o->value()-1;
  630. insefftype->value(part->partefx[ninseff]->geteffect());
  631. //insefftype->do_callback();
  632. inseffectui->refresh(part->partefx[ninseff]);
  633. int x=part->Pefxroute[ninseff];
  634. if (x==127) x=1;
  635. bypasseff->value(part->Pefxbypass[ninseff]);
  636. sendtochoice->value(x);}
  637. xywh {5 110 80 20} type Simple labelfont 1 align 6 minimum 1 maximum 127 step 1 textfont 1
  638. code0 {o->bounds(1,NUM_PART_EFX);}
  639. code1 {o->value(ninseff+1);}
  640. }
  641. Fl_Choice insefftype {
  642. label EffType
  643. callback {pthread_mutex_lock(part->mutex);
  644. part->partefx[ninseff]->changeeffect((int) o->value());
  645. pthread_mutex_unlock(part->mutex);
  646. inseffectui->refresh(part->partefx[ninseff]);}
  647. xywh {155 110 70 15} down_box BORDER_BOX labelsize 10 align 6
  648. code0 {o->value(part->partefx[ninseff]->geteffect());}
  649. } {
  650. MenuItem {} {
  651. label {No Effect}
  652. xywh {35 35 100 20} labelfont 1 labelsize 10
  653. }
  654. MenuItem {} {
  655. label Reverb
  656. xywh {45 45 100 20} labelfont 1 labelsize 10
  657. }
  658. MenuItem {} {
  659. label Echo
  660. xywh {55 55 100 20} labelfont 1 labelsize 10
  661. }
  662. MenuItem {} {
  663. label Chorus
  664. xywh {65 65 100 20} labelfont 1 labelsize 10
  665. }
  666. MenuItem {} {
  667. label Phaser
  668. xywh {70 70 100 20} labelfont 1 labelsize 10
  669. }
  670. MenuItem {} {
  671. label AlienWah
  672. xywh {80 80 100 20} labelfont 1 labelsize 10
  673. }
  674. MenuItem {} {
  675. label Distortion
  676. xywh {90 90 100 20} labelfont 1 labelsize 10
  677. }
  678. MenuItem {} {
  679. label EQ
  680. xywh {100 100 100 20} labelfont 1 labelsize 10
  681. }
  682. MenuItem {} {
  683. label DynFilter
  684. xywh {110 110 100 20} labelfont 1 labelsize 10
  685. }
  686. }
  687. Fl_Group inseffectuigroup {
  688. xywh {5 5 380 100} box FLAT_BOX color 48
  689. } {
  690. Fl_Group inseffectui {
  691. xywh {5 5 380 95}
  692. code0 {o->init(part->partefx[ninseff]);}
  693. class EffUI
  694. } {}
  695. }
  696. Fl_Button {} {
  697. label Close
  698. callback {partfx->hide();}
  699. xywh {325 115 60 20} box THIN_UP_BOX
  700. }
  701. Fl_Choice sendtochoice {
  702. label {Send To.}
  703. callback {int x=(int) o->value();
  704. part->Pefxroute[ninseff]=x;
  705. if (x==2) part->partefx[ninseff]->setdryonly(true);
  706. else part->partefx[ninseff]->setdryonly(false);}
  707. xywh {235 110 80 15} down_box BORDER_BOX labelsize 10 align 6
  708. code0 {int x=part->Pefxroute[ninseff]; if (x==127) x=1;}
  709. code1 {o->value(x);}
  710. } {
  711. MenuItem {} {
  712. label {Next Effect}
  713. xywh {45 45 100 20} labelfont 1 labelsize 10
  714. }
  715. MenuItem {} {
  716. label {Part Out}
  717. xywh {55 55 100 20} labelfont 1 labelsize 10
  718. }
  719. MenuItem {} {
  720. label {Dry Out}
  721. xywh {65 65 100 20} labelfont 1 labelsize 10
  722. }
  723. }
  724. Fl_Check_Button bypasseff {
  725. label bypass
  726. callback {part->Pefxbypass[ninseff]=(((int)o->value())!=0);}
  727. tooltip {if the effect is not used (is bypassed)} xywh {90 110 60 15} down_box DOWN_BOX labelsize 11
  728. code0 {int x=part->Pefxbypass[ninseff];o->value(x);}
  729. }
  730. Fl_Button {} {
  731. label C
  732. callback {presetsui->copy(part->partefx[ninseff]);}
  733. xywh {90 127 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 11 labelcolor 7
  734. }
  735. Fl_Button {} {
  736. label P
  737. callback {pthread_mutex_lock(&master->mutex);
  738. presetsui->paste(part->partefx[ninseff],inseffectui);
  739. pthread_mutex_unlock(&master->mutex);}
  740. xywh {120 127 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 11 labelcolor 7
  741. }
  742. }
  743. Fl_Window instrumentkitlist {
  744. label {Instrument Kit} open
  745. xywh {583 543 670 370} type Double box NO_BOX visible
  746. } {
  747. Fl_Button {} {
  748. label {Close Window}
  749. callback {instrumentkitlist->hide();}
  750. xywh {375 350 160 20} box THIN_UP_BOX
  751. }
  752. Fl_Scroll kitlist {open
  753. xywh {0 15 670 330} type VERTICAL box UP_FRAME
  754. code0 {if (part->Pkitmode==0) o->deactivate();}
  755. } {
  756. Fl_Pack {} {
  757. xywh {0 20 670 320}
  758. code0 {for (int i=0;i<NUM_KIT_ITEMS;i++){partkititem[i]=new PartKitItem(0,0,670,20,"");partkititem[i]->init(part,i,master,this);}}
  759. } {}
  760. }
  761. Fl_Box {} {
  762. label {No.}
  763. xywh {5 0 25 15} labelfont 1 labelsize 11 align 18
  764. }
  765. Fl_Box {} {
  766. label {M.}
  767. xywh {55 0 25 15} labelfont 1 labelsize 11 align 18
  768. }
  769. Fl_Box {} {
  770. label {Min.k}
  771. xywh {235 0 40 15} labelfont 1 labelsize 11 align 18
  772. }
  773. Fl_Box {} {
  774. label {Max.k}
  775. xywh {345 0 40 15} labelfont 1 labelsize 11 align 18
  776. }
  777. Fl_Box {} {
  778. label ADsynth
  779. xywh {405 0 50 15} labelfont 1 labelsize 11 align 18
  780. }
  781. Fl_Box {} {
  782. label SUBsynth
  783. xywh {470 0 60 15} labelfont 1 labelsize 11 align 18
  784. }
  785. Fl_Choice {} {
  786. label Mode
  787. callback {part->Pkitmode=(int) o->value();
  788. if (part->Pkitmode==0) {
  789. kitlist->deactivate();
  790. } else {
  791. kitlist->activate();
  792. };}
  793. xywh {35 350 70 15} down_box BORDER_BOX labelsize 11 textfont 1 textsize 11
  794. code0 {o->value(part->Pkitmode);}
  795. } {
  796. MenuItem {} {
  797. label OFF
  798. xywh {0 0 100 20} labelfont 1 labelsize 11
  799. }
  800. MenuItem {} {
  801. label MULTI
  802. xywh {10 10 100 20} labelfont 1 labelsize 11
  803. }
  804. MenuItem {} {
  805. label SINGLE
  806. xywh {20 20 100 20} labelfont 1 labelsize 11
  807. }
  808. }
  809. Fl_Check_Button {} {
  810. label {Drum mode}
  811. callback {part->Pdrummode=(int) o->value();}
  812. xywh {285 350 70 15} down_box DOWN_BOX labelsize 10
  813. code0 {o->value(part->Pdrummode);}
  814. }
  815. Fl_Box {} {
  816. label {FX.r.}
  817. xywh {620 0 30 15} labelfont 1 labelsize 11 align 18
  818. }
  819. Fl_Box {} {
  820. label PADsynth
  821. xywh {540 0 60 15} labelfont 1 labelsize 11 align 18
  822. }
  823. }
  824. Fl_Window instrumenteditwindow {
  825. label {Instrument Edit} open
  826. xywh {244 602 395 360} type Double box NO_BOX visible
  827. } {
  828. Fl_Group {} {
  829. xywh {0 220 395 110} box UP_FRAME
  830. } {
  831. Fl_Group {} {
  832. label PADsynth
  833. xywh {205 245 100 80} box ENGRAVED_FRAME labelfont 1
  834. } {
  835. Fl_Button padeditbutton {
  836. label Edit
  837. callback {showparameters(0,2);}
  838. xywh {215 280 80 35} color 51 selection_color 51 labelfont 1 labelsize 13 align 128
  839. code0 {if (part->kit[0].Ppadenabled==0) o->deactivate();}
  840. }
  841. Fl_Check_Button padsynenabledcheck {
  842. label Enabled
  843. callback {int x=(int) o->value();
  844. part->kit[0].Ppadenabled=x;
  845. if (x==0) padeditbutton->deactivate();
  846. else padeditbutton->activate();}
  847. tooltip {enable/disable PADsynth} xywh {215 255 80 20} box UP_BOX down_box DOWN_BOX color 51 selection_color 51 labelfont 1 labelsize 11
  848. code1 {o->value(part->kit[0].Ppadenabled);}
  849. }
  850. }
  851. Fl_Group {} {
  852. label ADDsynth
  853. xywh {5 245 100 80} box ENGRAVED_FRAME labelfont 1
  854. } {
  855. Fl_Check_Button adsynenabledcheck {
  856. label Enabled
  857. callback {int x=(int) o->value();
  858. part->kit[0].Padenabled=x;
  859. if (x==0) adeditbutton->deactivate();
  860. else adeditbutton->activate();}
  861. tooltip {enable/disable ADsynth} xywh {15 255 80 20} box UP_BOX down_box DOWN_BOX color 51 selection_color 51 labelfont 1 labelsize 11
  862. code1 {o->value(part->kit[0].Padenabled);}
  863. }
  864. Fl_Button adeditbutton {
  865. label Edit
  866. callback {showparameters(0,0);}
  867. xywh {15 281 80 34} color 51 selection_color 51 labelfont 1 labelsize 13 align 128
  868. code0 {if (part->kit[0].Padenabled==0) o->deactivate();}
  869. }
  870. }
  871. Fl_Group {} {
  872. label SUBsynth
  873. xywh {105 245 100 80} box ENGRAVED_FRAME labelfont 1
  874. } {
  875. Fl_Check_Button subsynenabledcheck {
  876. label Enabled
  877. callback {int x=(int) o->value();
  878. part->kit[0].Psubenabled=x;
  879. if (x==0) subeditbutton->deactivate();
  880. else subeditbutton->activate();}
  881. tooltip {enable/disable SUBsynth} xywh {115 255 80 20} box UP_BOX down_box DOWN_BOX color 51 selection_color 51 labelfont 1 labelsize 11
  882. code1 {o->value(part->kit[0].Psubenabled);}
  883. }
  884. Fl_Button subeditbutton {
  885. label Edit
  886. callback {showparameters(0,1);}
  887. xywh {115 280 80 35} color 51 selection_color 51 labelfont 1 labelsize 13 align 128
  888. code0 {if (part->kit[0].Psubenabled==0) o->deactivate();}
  889. }
  890. }
  891. Fl_Button {} {
  892. label {Kit Edit}
  893. callback {instrumentkitlist->show();}
  894. xywh {310 245 80 35} color 51 selection_color 51 labelfont 1 align 128
  895. }
  896. Fl_Button {} {
  897. label Effects
  898. callback {partfx->show();}
  899. xywh {310 290 80 35} color 51 selection_color 51 labelfont 1 labelsize 13
  900. }
  901. }
  902. Fl_Group {} {
  903. xywh {0 5 395 215} box UP_FRAME
  904. } {
  905. Fl_Input {} {
  906. label {Author and Copyright}
  907. callback {snprintf((char *)part->info.Pauthor,MAX_INFO_TEXT_SIZE,"%s",o->value());}
  908. xywh {5 60 385 50} type Multiline color 26 labelsize 10 align 5
  909. code0 {o->maximum_size(MAX_INFO_TEXT_SIZE);}
  910. code1 {o->value((char *) &part->info.Pauthor);}
  911. }
  912. Fl_Input {} {
  913. label Comments
  914. callback {snprintf((char *)part->info.Pcomments,MAX_INFO_TEXT_SIZE,"%s",o->value());}
  915. xywh {5 125 385 90} type Multiline color 26 labelsize 11 align 5
  916. code0 {o->maximum_size(MAX_INFO_TEXT_SIZE);}
  917. code1 {o->value((char *) &part->info.Pcomments);}
  918. }
  919. Fl_Choice {} {
  920. label {Type:}
  921. callback {part->info.Ptype=o->value();}
  922. xywh {5 25 155 20} down_box BORDER_BOX labelfont 1 labelsize 11 align 5 textsize 10
  923. code0 {o->value(part->info.Ptype);}
  924. } {
  925. MenuItem {} {
  926. label {--------------------------}
  927. xywh {20 20 100 20} labelfont 1 labelsize 11
  928. }
  929. MenuItem {} {
  930. label Piano
  931. xywh {10 10 100 20} labelfont 1 labelsize 11
  932. }
  933. MenuItem {} {
  934. label {Chromatic Percussion}
  935. xywh {20 20 100 20} labelfont 1 labelsize 11
  936. }
  937. MenuItem {} {
  938. label Organ
  939. xywh {30 30 100 20} labelfont 1 labelsize 11
  940. }
  941. MenuItem {} {
  942. label Guitar
  943. xywh {40 40 100 20} labelfont 1 labelsize 11
  944. }
  945. MenuItem {} {
  946. label Bass
  947. xywh {50 50 100 20} labelfont 1 labelsize 11
  948. }
  949. MenuItem {} {
  950. label {Solo Strings}
  951. xywh {60 60 100 20} labelfont 1 labelsize 11
  952. }
  953. MenuItem {} {
  954. label Ensemble
  955. xywh {70 70 100 20} labelfont 1 labelsize 11
  956. }
  957. MenuItem {} {
  958. label Brass
  959. xywh {80 80 100 20} labelfont 1 labelsize 11
  960. }
  961. MenuItem {} {
  962. label Reed
  963. xywh {90 90 100 20} labelfont 1 labelsize 11
  964. }
  965. MenuItem {} {
  966. label Pipe
  967. xywh {100 100 100 20} labelfont 1 labelsize 11
  968. }
  969. MenuItem {} {
  970. label {Synth Lead}
  971. xywh {110 110 100 20} labelfont 1 labelsize 11
  972. }
  973. MenuItem {} {
  974. label {Synth Pad}
  975. xywh {120 120 100 20} labelfont 1 labelsize 11
  976. }
  977. MenuItem {} {
  978. label {Synth Effects}
  979. xywh {130 130 100 20} labelfont 1 labelsize 11
  980. }
  981. MenuItem {} {
  982. label Ethnic
  983. xywh {140 140 100 20} labelfont 1 labelsize 11
  984. }
  985. MenuItem {} {
  986. label Percussive
  987. xywh {150 150 100 20} labelfont 1 labelsize 11
  988. }
  989. MenuItem {} {
  990. label {Sound Effects}
  991. xywh {160 160 100 20} labelfont 1 labelsize 11
  992. }
  993. }
  994. }
  995. Fl_Button {} {
  996. label Close
  997. callback {instrumenteditwindow->hide();}
  998. xywh {150 335 95 25} box THIN_UP_BOX
  999. }
  1000. }
  1001. }
  1002. Function {PartUI(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
  1003. code {part=NULL;
  1004. adnoteui=NULL;
  1005. subnoteui=NULL;
  1006. padnoteui=NULL;
  1007. lastkititem=-1;} {}
  1008. }
  1009. Function {init(Part *part_,Master *master_,int npart_,BankUI *bankui_)} {} {
  1010. code {bankui=bankui_;
  1011. part=part_;
  1012. npart=npart_;
  1013. master=master_;
  1014. ninseff=0;
  1015. make_window();
  1016. partgroup->position(this->parent()->x()+2,this->parent()->y()+2);
  1017. partgroup->show();
  1018. end();
  1019. //if (config.ui.showinstrumentinfo!=0) instrumenteditwindow->show();
  1020. int klimits[]={1,2,3,4,5,6,7,8,9,10,15,20,30,50,100,0};
  1021. keylimitlist->add("OFF");
  1022. int k=0;
  1023. int val=-1;
  1024. char tmp[10];
  1025. while (klimits[k]!=0){
  1026. sprintf(tmp,"%d",klimits[k]);
  1027. keylimitlist->add(tmp);
  1028. if (val==-1){
  1029. if (klimits[k]>part->Pkeylimit) val=k;
  1030. };
  1031. k++;
  1032. };
  1033. if (val==-1) val=k;
  1034. keylimitlist->value(val);} {}
  1035. }
  1036. Function {showparameters(int kititem,int engine)} {} {
  1037. code {if (engine==-1){//this is used if I want to clear the engine from the part
  1038. if (kititem==lastkititem) kititem=-1;
  1039. else kititem=lastkititem;
  1040. };
  1041. if (kititem!=lastkititem){
  1042. if (adnoteui!=NULL) delete (adnoteui);
  1043. if (subnoteui!=NULL) delete (subnoteui);
  1044. if (padnoteui!=NULL) delete (padnoteui);
  1045. adnoteui=NULL;subnoteui=NULL;padnoteui=NULL;
  1046. lastkititem=kititem;
  1047. if (kititem>=NUM_KIT_ITEMS) return;//bad kit item
  1048. if (kititem<0) return;
  1049. if (part->kit[kititem].adpars!=NULL)
  1050. adnoteui=new ADnoteUI(part->kit[kititem].adpars,master);
  1051. if (part->kit[kititem].subpars!=NULL)
  1052. subnoteui=new SUBnoteUI(part->kit[kititem].subpars);
  1053. if (part->kit[kititem].padpars!=NULL)
  1054. padnoteui=new PADnoteUI(part->kit[kititem].padpars,master);
  1055. };
  1056. if ((engine==0)&&(adnoteui!=NULL)) adnoteui->ADnoteGlobalParameters->show();
  1057. if ((engine==1)&&(subnoteui!=NULL)) subnoteui->SUBparameters->show();
  1058. if ((engine==2)&&(adnoteui!=NULL)) padnoteui->padnotewindow->show();} {}
  1059. }
  1060. Function {~PartUI()} {} {
  1061. code {if (adnoteui!=NULL) delete (adnoteui);
  1062. if (subnoteui!=NULL) delete (subnoteui);
  1063. if (padnoteui!=NULL) delete (padnoteui);
  1064. partgroup->hide();
  1065. //delete(partgroup);
  1066. ctlwindow->hide();
  1067. delete(ctlwindow);
  1068. partfx->hide();
  1069. delete(partfx);
  1070. instrumentkitlist->hide();
  1071. delete(instrumentkitlist);
  1072. instrumenteditwindow->hide();
  1073. delete(instrumenteditwindow);} {}
  1074. }
  1075. decl {Part *part;} {private local
  1076. }
  1077. decl {Master *master;} {private local
  1078. }
  1079. decl {BankUI *bankui;} {private local
  1080. }
  1081. decl {ADnoteUI *adnoteui;} {private local
  1082. }
  1083. decl {SUBnoteUI *subnoteui;} {private local
  1084. }
  1085. decl {PADnoteUI *padnoteui;} {private local
  1086. }
  1087. decl {PartSysEffSend *psyef[NUM_SYS_EFX];} {private local
  1088. }
  1089. decl {int npart;} {private local
  1090. }
  1091. decl {int ninseff;} {private local
  1092. }
  1093. decl {int lastkititem;} {private local
  1094. }
  1095. decl {PartKitItem *partkititem[NUM_KIT_ITEMS];} {private local
  1096. }
  1097. }