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.

PartUI.fl 37KB

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