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.

1132 lines
37KB

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