( Window.closeAll; w = Window.new().front.background_(Color.black); ~inputGui = CompositeView(w, Rect(10,80,250,450)) .background_(Color.rand) .alwaysOnTop_(true); //~inputGui.decorator = FlowLayout(~inputGui.bounds); StaticText(w, Rect(10,10,140,50)) .string_("GTR+") .stringColor_(Color.black) .background_(Color.rand) .font_(Font.default.size_(34)); c = QNumberBox(~inputGui, Rect(55, 250, 40, 40)) .font_(Font.default.size_(25)) .background_(Color.white); a = QSlider(~inputGui, Rect(55, 60, 40, 240)) .action_({ c.value_(a.value) }); StaticText(~inputGui, Rect(0,0,230,40)) .string_("INPUT //").background_(Color.rand) .stringColor_(Color.black) .font_(Font.default.size_(30)); ~fxModeGui = QPopUpMenu(~inputGui, Rect(10, 400, 300, 40)) .items_(["dry", "ringmod", "reverb","ringmod and reverb"]) .font_(Font.default.size_(35)).background_(Color.yellow); ~recTrigButton = Button(~inputGui, Rect(100, 50, 140, 45)) .states_([ ["TRIGGER", Color.black, Color.green], ["=======", Color.black, Color.red], ]) .font_(Font.default.size_(20)) .value_(0) .action_({ arg butt; butt.value.postln; }); ~recModeGui = Button(~inputGui, Rect(100, 110, 140, 90)) .states_([ ["TRIGGER \n ACTIVE", Color.black, Color.green], ["LOOPING \n RECORD", Color.black, Color.red], ["ONSET \n DETECTION", Color.black, Color.cyan], ["DISABLE \n RECORDING", Color.black, Color.gray] ]) .font_(Font.default.size_(20)) .value_(2) .action_({ arg butt; butt.value.postln; }); StaticText(~inputGui, Rect(100,200,130,30)) .string_("OVERDUB LEVEL").background_(Color.clear) .stringColor_(Color.white) .font_(Font.default.size_(15)); ~overdubModeGui = Button(~inputGui, Rect(100, 220, 140, 90)) .states_([ ["0%", Color.white, Color.gray], ["30%", Color.white, Color.red], ["50%", Color.white, Color.red], ["75%", Color.white, Color.red], ["90%", Color.white, Color.red], ["100%", Color.white, Color.red], ]) .font_(Font.default.size_(60)) .action_({ arg butt; butt.value.postln; }); ~instrPanModeGui = QPopUpMenu(~inputGui, Rect(10, 320, 220, 30)) .items_(["OFF","STEREO FRONT","STEREO BACK", "STEREO PAN", "STEREO RND", "QUAD", "QUAD ROTATE", "QUAD RANDOM" ]).font_(Font.default.size_(24)); ~c1 = QNumberBox(~inputGui, Rect(200, 360, 70, 40)) .font_(Font.default.size_(25)) .background_(Color.clear); ~a1 = QSlider(~inputGui, Rect(10, 360, 150, 30)) .action_({ ~c1.value_(~a1.value) }); l = LevelIndicator(~inputGui, bounds:Rect(10, 50, 40, 240)).front().value_(1).style_(\led); l.meterColor = Color.green(0.9); l.warningColor = Color.yellow(0.7); l.criticalColor = Color.red(0.5); ///////////// END OF INPUT GUI BOX //b ~bufferGui = CompositeView.new(w, bounds:Rect(40,750,750,200)) .background_(Color.white) .alwaysOnTop_(true); //~bufferPlotter = Plotter("plot", parent: ~bufferGui).value_([0, 1, 2, 3, 4].scramble * 100); // todo howto do this ? see end of chapter one of marinos's book on archive.org //. or page 215 - of this https://escholarship.org/content/qt2d33344j/qt2d33344j.pdf //~bufferPlotter = Plotter("plot", parent: ~bufferGui).value_(b); //~bufferPlotter.val // ------------- GRAIN GUI ~grainGui = CompositeView.new(w, bounds:Rect(540,80,250,760)) .background_(Color.rand) .alwaysOnTop_(true); ~grainGui.decorator = FlowLayout(~grainGui.bounds); VLayout( StaticText(~grainGui, Rect(50,50,200,30)).string_("gSYNTH////").background_(Color.rand).stringColor_(Color.black).font_(Font.default.size_(30)); StaticText(~grainGui, Rect(50,50,300,40)).string_("PLAYHEAD MODE").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); ~posModeGui = QPopUpMenu(~grainGui, Rect(10, 50, 300, 40)) .items_(["0.125", "0.25", "0.5", "1","2", "3", "4", "sensor"]) .font_(Font.default.size_(35)).background_(Color.yellow); StaticText(~grainGui, Rect(50,50,300,40)).string_("PITCH MODE").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); ~pitchModeGui = QPopUpMenu.new(~grainGui, Rect(10,100,300,40)) .items_([ "0: NO TRANSPOSITION", "1: + OCTAVE", "2: - OCTAVE", "3: 1 : 1.1 RANDOM SEMI/MIKTRO/TONES", "4: .25 : 5 LOW 5 OCTAVES", "5: 0.1 : 100 ", "6: 10 : 1000", "7: SENSOR --> RANDRATE", ]) .font_(Font.default.size_(20)) .stringColor_(Color.black).background_(Color.yellow); StaticText(~grainGui, Rect(50,50,300,40)).string_("DURATION MODE").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); ~durModeGui = QPopUpMenu.new(~grainGui, Rect(10,150,300,40)) .items_([ "0: baseDur 1 durRand 1", "1: baseDur 1/2 durRand 1", "2: baseDur 1/4 durRand 1", "3: baseDur 1/8 durRand 1", "4: baseDur 1/16 durRand 1", "5: baseDur 1 durRand 100", "5: baseDur 1 durRand 1000", "7: SENSOR --> RANDRATE", ]) .font_(Font.default.size_(20)) .value_(0) .stringColor_(Color.black).background_(Color.yellow); StaticText(~grainGui, Rect(50,150,150,40)).string_("DENSITY").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); ~densModeGui = QPopUpMenu.new(~grainGui, Rect(50,60,100,40)) .items_(["1","2","3","5","8","13","21", "34", "55","89","144","233", "377"]) .font_(Font.default.size_(30)).background_(Color.yellow); StaticText(~grainGui, Rect(50,50,150,40)).string_("IMPULSE").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); ~impulseModeGui = CheckBox.new(~grainGui, Rect(30,350,80,60)).value_(1).string_("sync/async"); /* StaticText(~grainGui, Rect(50,50,150,40)).string_("Pointer Rate Freeze").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(20)); ~ptrRateGui = NumberBox.new(~grainGui, Rect(30,450,80,40)).value_(1).increment(factor: 0.1).font_(Font.default.size_(30));*/ ~gPanModeGui = QPopUpMenu(~grainGui, Rect(10, 300, 220, 30)) .items_(["OFF","STEREO FRONT","STEREO BACK", "STEREO PAN", "STEREO RND", "QUAD", "QUAD ROTATE", "QUAD RANDOM" ]).font_(Font.default.size_(24)); ~outAmpModeGui = QSlider(~grainGui, Rect(55, 60, 240, 40)).value_(0.5) .action_({ ~g1.set(\amp, ~outAmpModeGui.value); }); ); // ------------- GRAIN GUI END ~iSpatGui = CompositeView.new(w, bounds:Rect(500,80,250,400)) .background_(Color.rand) .alwaysOnTop_(true); ~inputGui.bounds_(Rect(10, 60, 250, 450)); // contents adjust since coords are relative ~grainGui.bounds_(Rect(280, 60, 450, 650)); // contents adjust since coords are relative ~iSpatGui.bounds_(Rect(10, 570, 250, 500)); // contents adjust since coords are relative ) //~inputGui.resize_(6); // contents adjust since coords are relative //w.layout = HLayout(~inputGui, ~grainGui); /*( Window.closeAll; w = Window.new("GUI GTR", Rect(100,100,300,300)).layout( VLayout( HLayout([~inputGui]); ) ).front ) w.front;*/