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.

1213 lines
39KB

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