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.

1211 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");}
  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");}
  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");}
  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");}
  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");}
  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");}
  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");}
  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");}
  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");}
  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. xywh {5 110 210 20} box THIN_UP_BOX
  514. class Fl_Osc_Button
  515. }
  516. Fl_Group {} {
  517. label Portamento open
  518. xywh {280 15 160 90} box UP_FRAME labelsize 10
  519. class Fl_Osc_Group
  520. } {
  521. Fl_Check_Button {} {
  522. label Rcv
  523. tooltip {Receive Portamento Controllers} xywh {285 20 40 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
  524. code0 {o->init("portamento.receive");}
  525. class Fl_Osc_Check
  526. }
  527. Fl_Dial {} {
  528. label time
  529. tooltip {Portamento time} xywh {285 60 25 25} labelsize 10 maximum 127 step 1
  530. code0 {o->init("portamento.time");}
  531. class Fl_Osc_Dial
  532. }
  533. Fl_Counter {} {
  534. label thresh
  535. 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
  536. code0 {o->init("portamento.pitchthresh");}
  537. class Fl_Osc_Counter
  538. }
  539. Fl_Check_Button {} {
  540. label {th.type}
  541. tooltip {Threshold type (min/max)} xywh {365 70 15 15} down_box DOWN_BOX labelsize 10 align 2
  542. code0 {o->init("portamento.pitchthreshtype");}
  543. class Fl_Osc_Check
  544. }
  545. Fl_Box {} {
  546. label {x100 cnt.}
  547. xywh {340 50 55 15} labelsize 10 align 16
  548. }
  549. Fl_Dial {} {
  550. label {t.dn/up}
  551. tooltip {Portamento time stretch (up/down)} xywh {315 60 25 25} labelsize 10 maximum 127 step 1
  552. code0 {o->init("portamento.updowntimestretch");}
  553. class Fl_Osc_Dial
  554. }
  555. Fl_Dial propta {
  556. label {Prp.Rate}
  557. tooltip {Distance required to double change from nonpropotinal portamento time} xywh {405 20 25 25} labelsize 9 maximum 127 step 1
  558. code0 {o->init("portamento.propRate");}
  559. class Fl_Osc_Dial
  560. }
  561. Fl_Dial proptb {
  562. label {Prp.Dpth}
  563. tooltip {The difference from nonproportinal portamento} xywh {405 60 25 25} labelsize 9 maximum 127 step 1
  564. code0 {o->init("portamento.propDepth");}
  565. class Fl_Osc_Dial
  566. }
  567. Fl_Check_Button {} {
  568. label {Proprt.}
  569. callback {if(o->value()){propta->activate();proptb->activate();}
  570. else {propta->deactivate();proptb->deactivate();}}
  571. tooltip {Enable Proportinal Portamento (over fixed Portamento)} xywh {285 40 50 15} box THIN_UP_BOX down_box DOWN_BOX labelsize 9
  572. code0 {o->init("portamento.proportional");}
  573. class Fl_Osc_Check
  574. }
  575. }
  576. Fl_Group {} {
  577. label Resonance
  578. xywh {445 15 50 90} box UP_FRAME labelsize 10
  579. class Fl_Osc_Group
  580. } {
  581. Fl_Dial {} {
  582. label BWdpth
  583. tooltip {BandWidth controller depth} xywh {455 60 25 25} labelsize 10 maximum 127 step 1
  584. code0 {o->init("resonancebandwidth.depth");}
  585. class Fl_Osc_Dial
  586. }
  587. Fl_Dial {} {
  588. label CFdpth
  589. tooltip {Center Frequency controller Depth} xywh {455 20 25 25} labelsize 10 maximum 127 step 1
  590. code0 {o->init("resonancecenter.depth");}
  591. class Fl_Osc_Dial
  592. }
  593. }
  594. Fl_Check_Button {} {
  595. label {Exp MWh}
  596. tooltip {Exponential modulation wheel} xywh {10 15 40 25} down_box DOWN_BOX labelsize 10 align 148
  597. code0 {o->init("modwheel.exponential");}
  598. class Fl_Osc_Check
  599. }
  600. Fl_Check_Button {} {
  601. label {Exp BW}
  602. tooltip {Exponential BandWidth Controller} xywh {85 15 35 25} down_box DOWN_BOX labelsize 10 align 148
  603. code0 {o->init("bandwidth.exponential");}
  604. class Fl_Osc_Check
  605. }
  606. }
  607. Fl_Window partfx {
  608. label {Part's Insert Effects}
  609. private xywh {569 775 390 145} type Double box NO_BOX
  610. class Fl_Osc_Window visible
  611. } {
  612. Fl_Box {} {
  613. xywh {0 0 0 0}
  614. code0 {partfx->init(osc, part_path);}
  615. }
  616. Fl_Counter inseffnocounter {
  617. label {FX No.}
  618. callback {ninseff=(int) o->value()-1;
  619. insefftype->oscMove("partefx"+to_s(ninseff)+"/efftype");
  620. inseffectuigroup->reext("partefx"+to_s(ninseff)+"/");
  621. bypasseff->oscMove("Pefxbypass"+to_s(ninseff));
  622. /*insefftype->value(part->partefx[ninseff]->geteffect());*/
  623. //insefftype->do_callback();
  624. inseffectui->refresh();
  625. int x=127;/*part->Pefxroute[ninseff];*/
  626. if (x==127) x=1;
  627. sendtochoice->value(x);}
  628. xywh {5 110 80 20} type Simple labelfont 1 align 6 minimum 1 maximum 127 step 1 textfont 1
  629. code0 {o->bounds(1,NUM_PART_EFX);}
  630. code1 {o->value(ninseff+1);}
  631. }
  632. Fl_Choice insefftype {
  633. label EffType
  634. callback {inseffectui->efftype = o->value();
  635. inseffectui->refresh();}
  636. xywh {155 110 70 15} down_box BORDER_BOX labelsize 10 align 6
  637. code0 {o->init(("partefx"+to_s(ninseff)+"/efftype").c_str());}
  638. class Fl_Osc_Choice
  639. } {
  640. MenuItem {} {
  641. label {No Effect}
  642. xywh {35 35 100 20} labelfont 1 labelsize 10
  643. }
  644. MenuItem {} {
  645. label Reverb
  646. xywh {45 45 100 20} labelfont 1 labelsize 10
  647. }
  648. MenuItem {} {
  649. label Echo
  650. xywh {55 55 100 20} labelfont 1 labelsize 10
  651. }
  652. MenuItem {} {
  653. label Chorus
  654. xywh {65 65 100 20} labelfont 1 labelsize 10
  655. }
  656. MenuItem {} {
  657. label Phaser
  658. xywh {70 70 100 20} labelfont 1 labelsize 10
  659. }
  660. MenuItem {} {
  661. label AlienWah
  662. xywh {80 80 100 20} labelfont 1 labelsize 10
  663. }
  664. MenuItem {} {
  665. label Distortion
  666. xywh {90 90 100 20} labelfont 1 labelsize 10
  667. }
  668. MenuItem {} {
  669. label EQ
  670. xywh {100 100 100 20} labelfont 1 labelsize 10
  671. }
  672. MenuItem {} {
  673. label DynFilter
  674. xywh {110 110 100 20} labelfont 1 labelsize 10
  675. }
  676. }
  677. Fl_Group inseffectuigroup {
  678. xywh {5 5 380 100} box FLAT_BOX color 48
  679. class Fl_Osc_Group
  680. } {
  681. Fl_Box {} {
  682. xywh {0 0 0 0}
  683. code0 {inseffectuigroup->ext = "partefx0/";}
  684. }
  685. Fl_Group inseffectui {
  686. xywh {5 5 380 95}
  687. code0 {o->init(true);}
  688. class EffUI
  689. } {}
  690. }
  691. Fl_Button {} {
  692. label Close
  693. callback {partfx->hide();}
  694. xywh {325 115 60 20} box THIN_UP_BOX
  695. }
  696. Fl_Choice sendtochoice {
  697. label {Send To.}
  698. callback {(void)o;/*int x=(int) o->value();
  699. part->Pefxroute[ninseff]=x;
  700. if (x==2) part->partefx[ninseff]->setdryonly(true);
  701. else part->partefx[ninseff]->setdryonly(false);*/}
  702. xywh {235 110 80 15} down_box BORDER_BOX labelsize 10 align 6
  703. code0 {/*int x=part->Pefxroute[ninseff]; if (x==127) x=1;*/}
  704. code1 {o->init(("Pefxroute"+to_s(ninseff)).c_str());}
  705. class Fl_Osc_Choice
  706. } {
  707. MenuItem {} {
  708. label {Next Effect}
  709. xywh {45 45 100 20} labelfont 1 labelsize 10
  710. }
  711. MenuItem {} {
  712. label {Part Out}
  713. xywh {55 55 100 20} labelfont 1 labelsize 10
  714. }
  715. MenuItem {} {
  716. label {Dry Out}
  717. xywh {65 65 100 20} labelfont 1 labelsize 10
  718. }
  719. }
  720. Fl_Check_Button bypasseff {
  721. label bypass
  722. tooltip {if the effect is not used (is bypassed)} xywh {90 110 60 15} down_box DOWN_BOX labelsize 11
  723. code0 {o->init("Pefxbypass"+to_s(ninseff));}
  724. class Fl_Osc_Check
  725. }
  726. Fl_Button {} {
  727. label C
  728. callback {presetsui->copy(partfx->loc()+"partefx"+to_s(ninseff)+"/");}
  729. xywh {90 127 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 11 labelcolor 55
  730. }
  731. Fl_Button {} {
  732. label P
  733. callback {presetsui->paste(partfx->loc()+"partefx"+to_s(ninseff)+"/",inseffectui);}
  734. xywh {120 127 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 11 labelcolor 55
  735. }
  736. }
  737. Fl_Window instrumentkitlist {
  738. label {Instrument Kit}
  739. xywh {601 611 670 370} type Double box NO_BOX
  740. class Fl_Osc_Window visible
  741. } {
  742. Fl_Box {} {
  743. xywh {0 0 0 0}
  744. code0 {instrumentkitlist->init(osc, "/part"+to_s(npart)+"/");}
  745. }
  746. Fl_Button {} {
  747. label {Close Window}
  748. callback {instrumentkitlist->hide();}
  749. xywh {255 350 160 20} box THIN_UP_BOX
  750. }
  751. Fl_Scroll kitlist {open
  752. xywh {0 15 670 330} type VERTICAL box UP_FRAME
  753. } {
  754. Fl_Pack {} {
  755. xywh {0 20 670 320}
  756. code0 {for (int i=0;i<NUM_KIT_ITEMS;i++){partkititem[i]=new PartKitItem(0,0,670,20);partkititem[i]->init(i,this);}}
  757. } {}
  758. }
  759. Fl_Box {} {
  760. label {No.}
  761. xywh {5 0 25 15} labelfont 1 labelsize 11 align 18
  762. }
  763. Fl_Box {} {
  764. label {M.}
  765. xywh {55 0 25 15} labelfont 1 labelsize 11 align 18
  766. }
  767. Fl_Box {} {
  768. label {Min.k}
  769. xywh {235 0 40 15} labelfont 1 labelsize 11 align 18
  770. }
  771. Fl_Box {} {
  772. label {Max.k}
  773. xywh {345 0 40 15} labelfont 1 labelsize 11 align 18
  774. }
  775. Fl_Box {} {
  776. label ADsynth
  777. xywh {405 0 50 15} labelfont 1 labelsize 11 align 18
  778. }
  779. Fl_Box {} {
  780. label SUBsynth
  781. xywh {470 0 60 15} labelfont 1 labelsize 11 align 18
  782. }
  783. Fl_Choice {} {
  784. label Mode
  785. callback {if (o->value()==0) {
  786. for (int i=1;i<NUM_KIT_ITEMS;i++)
  787. partkititem[i]->deactivate();
  788. partkititem[0]->mutedcheck->deactivate();
  789. } else {
  790. for (int i=1;i<NUM_KIT_ITEMS;i++)
  791. partkititem[i]->activate();
  792. partkititem[0]->mutedcheck->activate(); };}
  793. xywh {35 350 70 15} down_box BORDER_BOX labelsize 11 textfont 1 textsize 11
  794. code0 {o->init("Pkitmode");}
  795. class Fl_Osc_Choice
  796. } {
  797. MenuItem {} {
  798. label OFF
  799. xywh {0 0 100 20} labelfont 1 labelsize 11
  800. }
  801. MenuItem {} {
  802. label MULTI
  803. xywh {10 10 100 20} labelfont 1 labelsize 11
  804. }
  805. MenuItem {} {
  806. label SINGLE
  807. xywh {20 20 100 20} labelfont 1 labelsize 11
  808. }
  809. }
  810. Fl_Check_Button {} {
  811. label {Drum mode}
  812. xywh {125 350 80 15} down_box DOWN_BOX labelsize 10
  813. code0 {o->init("Pdrummode");}
  814. class Fl_Osc_Check
  815. }
  816. Fl_Button {} {
  817. label Comments
  818. callback {instrumenteditwindow->show();}
  819. xywh {481 350 106 20} box THIN_UP_BOX
  820. }
  821. Fl_Button {} {
  822. label Effects
  823. callback {partfx->show();} selected
  824. xywh {600 350 70 20} box THIN_UP_BOX
  825. }
  826. Fl_Box {} {
  827. label {FX.r.}
  828. xywh {620 0 30 15} labelfont 1 labelsize 11 align 18
  829. }
  830. Fl_Box {} {
  831. label PADsynth
  832. xywh {540 0 60 15} labelfont 1 labelsize 11 align 18
  833. }
  834. }
  835. Fl_Window instrumenteditwindow {
  836. label {Instrument Edit} open
  837. xywh {262 621 395 360} type Double box NO_BOX
  838. class Fl_Osc_Window visible
  839. } {
  840. Fl_Box {} {
  841. xywh {0 0 0 0}
  842. code0 {instrumenteditwindow->init(osc, "/part"+to_s(npart)+"/");}
  843. }
  844. Fl_Group editgroup {
  845. xywh {0 220 395 110} box UP_FRAME
  846. class Fl_Osc_Group
  847. } {
  848. Fl_Box {} {
  849. xywh {0 220 0 0}
  850. code0 {editgroup->ext = "kit0/";}
  851. }
  852. Fl_Group {} {
  853. label PADsynth
  854. xywh {205 245 100 80} box ENGRAVED_FRAME labelfont 1
  855. } {
  856. Fl_Button padeditbutton {
  857. label Edit
  858. callback {showparameters(0,2);}
  859. xywh {215 280 80 35} color 51 selection_color 51 labelfont 1 labelsize 13 align 128
  860. }
  861. Fl_Check_Button padsynenabledcheck {
  862. label Enabled
  863. callback {if (o->value()==0) padeditbutton->deactivate();
  864. else padeditbutton->activate();}
  865. 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
  866. code1 {o->init("Ppadenabled");}
  867. class Fl_Osc_Check
  868. }
  869. }
  870. Fl_Group {} {
  871. label ADsynth
  872. xywh {5 245 100 80} box ENGRAVED_FRAME labelfont 1
  873. } {
  874. Fl_Check_Button adsynenabledcheck {
  875. label Enabled
  876. callback {if (o->value()==0) adeditbutton->deactivate();
  877. else adeditbutton->activate();}
  878. 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
  879. code1 {o->init("Padenabled");}
  880. class Fl_Osc_Check
  881. }
  882. Fl_Button adeditbutton {
  883. label Edit
  884. callback {
  885. if (Fl::event_shift()) {
  886. showvoiceparams(0, true);
  887. } else if (Fl::event_ctrl()) {
  888. showvoiceparams(0, false);
  889. } else
  890. showparameters(0,0);
  891. }
  892. xywh {15 281 80 34} color 51 selection_color 51 labelfont 1 labelsize 13 align 128
  893. }
  894. }
  895. Fl_Group {} {
  896. label SUBsynth
  897. xywh {105 245 100 80} box ENGRAVED_FRAME labelfont 1
  898. } {
  899. Fl_Check_Button subsynenabledcheck {
  900. label Enabled
  901. callback {if (o->value()==0) subeditbutton->deactivate();
  902. else subeditbutton->activate();}
  903. 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
  904. code1 {o->init("Psubenabled");}
  905. class Fl_Osc_Check
  906. }
  907. Fl_Button subeditbutton {
  908. label Edit
  909. callback {showparameters(0,1);}
  910. xywh {115 280 80 35} color 51 selection_color 51 labelfont 1 labelsize 13 align 128
  911. }
  912. }
  913. Fl_Button {} {
  914. label {Kit Edit}
  915. callback {instrumentkitlist->show();}
  916. xywh {310 245 80 35} color 51 selection_color 51 labelfont 1 align 128
  917. }
  918. Fl_Button {} {
  919. label Effects
  920. callback {partfx->show();}
  921. xywh {310 290 80 35} color 51 selection_color 51 labelfont 1 labelsize 13
  922. }
  923. }
  924. Fl_Group {} {
  925. xywh {0 5 395 215} box UP_FRAME
  926. } {
  927. Fl_Input {} {
  928. label {Author and Copyright}
  929. xywh {5 60 385 50} type Multiline color 124 labelsize 10 align 5
  930. code0 {o->maximum_size(MAX_INFO_TEXT_SIZE);}
  931. code1 {o->init("info.Pauthor");}
  932. callback { o->oscWrite(o->ext, "s", o->value()); }
  933. class Fl_Osc_Input
  934. }
  935. Fl_Input {} {
  936. label Comments
  937. xywh {5 125 385 90} type Multiline color 124 labelsize 11 align 5
  938. code0 {o->maximum_size(MAX_INFO_TEXT_SIZE);}
  939. code1 {o->init("info.Pcomments");}
  940. callback { o->oscWrite(o->ext, "s", o->value()); }
  941. class Fl_Osc_Input
  942. }
  943. Fl_Choice {} {
  944. label {Type:}
  945. xywh {5 25 155 20} down_box BORDER_BOX labelfont 1 labelsize 11 align 5 textsize 10
  946. code0 {o->init("info.Ptype");}
  947. class Fl_Osc_Choice
  948. } {
  949. MenuItem {} {
  950. label {--------------------------}
  951. xywh {20 20 100 20} labelfont 1 labelsize 11
  952. }
  953. MenuItem {} {
  954. label Piano
  955. xywh {10 10 100 20} labelfont 1 labelsize 11
  956. }
  957. MenuItem {} {
  958. label {Chromatic Percussion}
  959. xywh {20 20 100 20} labelfont 1 labelsize 11
  960. }
  961. MenuItem {} {
  962. label Organ
  963. xywh {30 30 100 20} labelfont 1 labelsize 11
  964. }
  965. MenuItem {} {
  966. label Guitar
  967. xywh {40 40 100 20} labelfont 1 labelsize 11
  968. }
  969. MenuItem {} {
  970. label Bass
  971. xywh {50 50 100 20} labelfont 1 labelsize 11
  972. }
  973. MenuItem {} {
  974. label {Solo Strings}
  975. xywh {60 60 100 20} labelfont 1 labelsize 11
  976. }
  977. MenuItem {} {
  978. label Ensemble
  979. xywh {70 70 100 20} labelfont 1 labelsize 11
  980. }
  981. MenuItem {} {
  982. label Brass
  983. xywh {80 80 100 20} labelfont 1 labelsize 11
  984. }
  985. MenuItem {} {
  986. label Reed
  987. xywh {90 90 100 20} labelfont 1 labelsize 11
  988. }
  989. MenuItem {} {
  990. label Pipe
  991. xywh {100 100 100 20} labelfont 1 labelsize 11
  992. }
  993. MenuItem {} {
  994. label {Synth Lead}
  995. xywh {110 110 100 20} labelfont 1 labelsize 11
  996. }
  997. MenuItem {} {
  998. label {Synth Pad}
  999. xywh {120 120 100 20} labelfont 1 labelsize 11
  1000. }
  1001. MenuItem {} {
  1002. label {Synth Effects}
  1003. xywh {130 130 100 20} labelfont 1 labelsize 11
  1004. }
  1005. MenuItem {} {
  1006. label Ethnic
  1007. xywh {140 140 100 20} labelfont 1 labelsize 11
  1008. }
  1009. MenuItem {} {
  1010. label Percussive
  1011. xywh {150 150 100 20} labelfont 1 labelsize 11
  1012. }
  1013. MenuItem {} {
  1014. label {Sound Effects}
  1015. xywh {160 160 100 20} labelfont 1 labelsize 11
  1016. }
  1017. }
  1018. }
  1019. Fl_Button {} {
  1020. label Close
  1021. callback {instrumenteditwindow->hide();}
  1022. xywh {150 335 95 25} box THIN_UP_BOX
  1023. }
  1024. }
  1025. }
  1026. Function {PartUI(int x,int y, int w, int h, const char *label=0):Fl_Osc_Group(x,y,w,h,label)} {open
  1027. } {
  1028. code {adnoteui=NULL;
  1029. subnoteui=NULL;
  1030. padnoteui=NULL;
  1031. lastkititem=-1;} {}
  1032. }
  1033. Function {init(std::string part_path_, int npart_,BankUI *bankui_, std::string loc_, Fl_Osc_Interface *osc_)} {open
  1034. } {
  1035. code {assert(osc_);
  1036. assert(!loc_.empty());
  1037. bankui=bankui_;
  1038. part_path = part_path_;
  1039. base = part_path;
  1040. npart=npart_;
  1041. ninseff=0;
  1042. osc=osc_;
  1043. loc=loc_;
  1044. make_window();
  1045. \#ifdef NTK_GUI
  1046. adsynenabledcheck->selection_color(55);
  1047. subsynenabledcheck->selection_color(55);
  1048. padsynenabledcheck->selection_color(55);
  1049. \#endif
  1050. partgroup->position(this->parent()->x()+2,this->parent()->y()+2);
  1051. partgroup->show();
  1052. end();
  1053. //if (config.ui.showinstrumentinfo!=0) instrumenteditwindow->show();
  1054. } {}
  1055. }
  1056. Function {cleanuplastkit(int kititem)} {open return_type int
  1057. } {
  1058. code {
  1059. if (kititem==lastkititem)
  1060. return 0;
  1061. delete adnoteui;
  1062. delete subnoteui;
  1063. delete padnoteui;
  1064. adnoteui=NULL;subnoteui=NULL;padnoteui=NULL;
  1065. lastkititem=kititem;
  1066. if(kititem>=NUM_KIT_ITEMS) return 1;//bad kit item
  1067. if(kititem<0) return 1;
  1068. return 0;
  1069. } {}}
  1070. Function {showparameters(int kititem,int engine)} {open
  1071. } {
  1072. code {
  1073. if (engine==-1){//this is used if I want to clear the engine from the part
  1074. //if (kititem==lastkititem) kititem=-1;
  1075. //else kititem=lastkititem;
  1076. delete adnoteui;
  1077. delete subnoteui;
  1078. delete padnoteui;
  1079. adnoteui=NULL;subnoteui=NULL;padnoteui=NULL;
  1080. return;
  1081. }
  1082. if (cleanuplastkit(kititem))
  1083. return;
  1084. if(!adnoteui && engine==0)//adsynenabledcheck->value())
  1085. adnoteui=new ADnoteUI(loc+"kit"+to_s(kititem)+"/adpars/", osc);
  1086. if(!subnoteui && engine==1)//subsynenabledcheck->value())
  1087. subnoteui=new SUBnoteUI(osc, loc+"kit"+to_s(kititem)+"/subpars/");
  1088. if(!padnoteui && engine==2)//padsynenabledcheck->value())
  1089. padnoteui=new PADnoteUI(loc+"kit"+to_s(kititem)+"/padpars/", osc);
  1090. if (engine==0&&adnoteui) adnoteui->ADnoteGlobalParameters->show();
  1091. if (engine==1&&subnoteui) subnoteui->SUBparameters->show();
  1092. if (engine==2&&padnoteui) padnoteui->padnotewindow->show();} {}
  1093. }
  1094. Function {showvoiceparams(int kititem, bool voicelist)} {open
  1095. } {
  1096. code {
  1097. if (cleanuplastkit(kititem))
  1098. return;
  1099. if(adnoteui ||
  1100. (adnoteui=new ADnoteUI(loc+"kit"+to_s(kititem)+"/adpars/", osc))) {
  1101. if(voicelist)
  1102. adnoteui->ADnoteVoiceList->show();
  1103. else {
  1104. if (adnoteui->advoice->mod_type->value() == 0)
  1105. adnoteui->advoice->voiceFMparametersgroup->deactivate();
  1106. else
  1107. adnoteui->advoice->voiceFMparametersgroup->activate();
  1108. adnoteui->ADnoteVoice->show();
  1109. }}} {}}
  1110. Function {~PartUI()} {} {
  1111. code {delete adnoteui;
  1112. delete subnoteui;
  1113. delete padnoteui;
  1114. partgroup->hide();
  1115. //delete(partgroup);
  1116. ctlwindow->hide();
  1117. delete(ctlwindow);
  1118. partfx->hide();
  1119. delete(partfx);
  1120. instrumentkitlist->hide();
  1121. delete(instrumentkitlist);
  1122. instrumenteditwindow->hide();
  1123. delete(instrumenteditwindow);} {}
  1124. }
  1125. decl {BankUI *bankui;} {private local
  1126. }
  1127. decl {ADnoteUI *adnoteui;} {selected public local
  1128. }
  1129. decl {SUBnoteUI *subnoteui;} {private local
  1130. }
  1131. decl {PADnoteUI *padnoteui;} {private local
  1132. }
  1133. decl {PartSysEffSend *psyef[NUM_SYS_EFX];} {private local
  1134. }
  1135. decl {int npart;} {private local
  1136. }
  1137. decl {int ninseff;} {private local
  1138. }
  1139. decl {int lastkititem;} {private local
  1140. }
  1141. decl {PartKitItem *partkititem[NUM_KIT_ITEMS];} {private local
  1142. }
  1143. decl {std::string part_path;} {private local
  1144. }
  1145. decl {std::string loc;} {private local
  1146. }
  1147. decl {Fl_Osc_Interface *osc;} {private local
  1148. }
  1149. Function {rebase(std::string new_loc)} {open
  1150. } {
  1151. code {
  1152. loc = new_loc;
  1153. partgroupui->rebase(new_loc);
  1154. ctlwindow->rebase(new_loc+"ctl/");
  1155. partfx->rebase(new_loc);
  1156. instrumentkitlist->rebase(new_loc);
  1157. instrumenteditwindow->rebase(new_loc);
  1158. partenablebutton->rebase(new_loc);
  1159. int next_part = 0;
  1160. const char *tmp = new_loc.c_str();
  1161. while(*tmp && !isdigit(*tmp)) tmp++;
  1162. next_part = atoi(tmp);
  1163. for (int i=0;i<NUM_SYS_EFX;i++)
  1164. psyef[i]->rebase(next_part);
  1165. } {selected
  1166. }
  1167. }
  1168. }