# data file for the Fltk User Interface Designer (fluid) version 1.0106 header_name {.h} code_name {.cc} decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} decl {//License: GNU GPL version 2 or later} {} decl {\#include } {public } decl {\#include } {public } decl {\#include } {public } decl {\#include } {public } decl {\#include } {public } decl {\#include "Fl_Osc_Pane.H"} {public } decl {\#include "Fl_Osc_Value.H"} {public } decl {\#include "Fl_Osc_Check.H"} {public } decl {\#include "Fl_Osc_Counter.H"} {public } decl {\#include "Fl_Osc_Input.H"} {public } decl {\#include "Fl_Osc_Output.H"} {public } decl {\#include "../Misc/Microtonal.h"} {public } class MicrotonalUI {} { Function {make_window(Fl_Osc_Interface *osc, std::string base)} {} { Fl_Window microtonaluiwindow { label Scales xywh {99 164 405 450} type Double hide class Fl_Osc_Window } { Fl_Box {} { xywh {0 0 0 0} code0 {microtonaluiwindow->init(osc, base);} } Fl_Group {} { tooltip {Center where the note's freqs. are turned upside-down} xywh {249 2 155 45} box ENGRAVED_FRAME } { Fl_Check_Button {} { label {Invert keys} callback {if (o->value()==0) centerinvertcounter->deactivate(); else centerinvertcounter->activate();} tooltip {Turn upside-down the note frequencies} xywh {254 13 55 30} down_box DOWN_BOX labelfont 1 labelsize 11 align 148 code0 {o->init("Pinvertupdown");} class Fl_Osc_Check } Fl_Counter centerinvertcounter { label Center xywh {319 13 80 20} labelfont 1 labelsize 11 align 130 minimum 0 maximum 127 step 1 textfont 1 code0 {o->lstep(12/*microtonal->getoctavesize()*/);} code1 {o->init("Pinvertupdowncenter");} class Fl_Osc_Counter } } Fl_Group microtonalgroup {selected xywh {3 49 402 398} box ENGRAVED_FRAME } { Fl_Button applybutton { label Retune callback {apply();} tooltip {Retune the synth accorging to the inputs from "Tunnings" and "Keyboard Mappings"} xywh {8 413 107 28} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 13 } Fl_Value_Output octavesizeoutput { label {nts./oct.} tooltip {Notes/Octave} xywh {150 423 35 17} labelsize 10 align 5 maximum 500 step 1 value 12 textfont 1 code0 {o->init("octavesize");} class Fl_Osc_Output } Fl_Input nameinput { label {Name:} xywh {8 64 285 25} labelfont 1 labelsize 11 align 5 code0 {o->maximum_size(MICROTONAL_MAX_NAME_LEN);} code1 {o->init("Pname");} class Fl_Osc_Input } Fl_Input tuningsinput { label {Tunings:} xywh {8 144 182 264} type Multiline labelfont 1 labelsize 11 align 5 when 2 code0 {updateTuningsInput();} } Fl_Input commentinput { label {Comment:} xywh {8 104 391 25} labelfont 1 labelsize 11 align 5 code0 {o->maximum_size(MICROTONAL_MAX_NAME_LEN);} code1 {o->init("Pcomment");} class Fl_Osc_Input } Fl_Counter {} { label Shift xywh {313 69 70 20} type Simple labelsize 11 align 1 minimum -64 maximum 63 step 1 textfont 1 code0 {o->init("Pscaleshift");} class Fl_Osc_Counter } Fl_Button {} { label {Import .SCL file} callback {/*const char *filename; filename=fl_file_chooser("Open:","(*.scl)",NULL,0); if (filename==NULL) return; int result=microtonal->loadscl(filename); if (result==0) { updateTuningsInput(); nameinput->cut(0,nameinput->maximum_size()); nameinput->insert((char *)microtonal->Pname); nameinput->position(0); commentinput->cut(0,commentinput->maximum_size()); commentinput->insert((char *)microtonal->Pname); commentinput->position(0); tuningsinput->position(0); octavesizeoutput->do_callback(); } else { fl_alert("Error: Could not load the file."); };*/} tooltip {Inport Scala .scl file (tunnings)} xywh {243 411 84 15} box THIN_UP_BOX labelfont 1 labelsize 10 } Fl_Group keymappinggroup { label {Keyboard Mapping} open xywh {193 144 206 264} box ENGRAVED_BOX labelfont 1 labelsize 11 } { Fl_Input mappinginput { xywh {250 147 146 258} type Multiline labelfont 1 labelsize 11 align 5 when 2 code0 {updateMappingInput();} } Fl_Counter firstnotecounter { label {First note} tooltip {First MIDI note number} xywh {199 195 42 18} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 textfont 1 textsize 11 code0 {o->init("Pfirstkey");} class Fl_Osc_Counter } Fl_Counter lastnotecounter { label {Last note} tooltip {Last MIDI note number} xywh {199 225 42 18} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 value 127 textfont 1 textsize 11 code0 {o->init("Plastkey");} class Fl_Osc_Counter } Fl_Counter middlenotecounter { label {Midle note} tooltip {Midle note (where scale degree 0 is mapped to)} xywh {199 267 42 18} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 value 60 textfont 1 textsize 11 code0 {o->init("Pmiddlenote");} class Fl_Osc_Counter } Fl_Value_Output mapsizeoutput { label {Map Size} xywh {201 382 44 20} labelsize 10 align 5 maximum 500 step 1 value 12 textfont 1 code0 {o->init("Pmapsize");} class Fl_Osc_Output } } Fl_Check_Button mappingenabledbutton { label ON callback {if (o->value()==0) keymappinggroup->deactivate(); else keymappinggroup->activate(); o->show();} tooltip {Enable the Mapping (otherwise the mapping is linear)} xywh {198 150 48 21} box FLAT_BOX down_box DOWN_BOX labelfont 1 code0 {o->init("Pmappingenabled");} class Fl_Osc_Check } Fl_Button {} { label {Import .kbm file} callback { //TODO Disabled until this can be moved into middleware /*const char *filename; filename=fl_file_chooser("Open:","(*.kbm)",NULL,0); if (filename==NULL) return; int result=microtonal->loadkbm(filename); if (result==0) { updateMappingInput(); mappinginput->position(0); mapsizeoutput->update(); firstnotecounter->update(); lastnotecounter->update(); middlenotecounter->update(); mappingenabledbutton->update(); afreqinput->update(); anotecounter->update(); } else { fl_alert("Error: Could not load the file."); };*/} tooltip {Inport Scala .kbm file (keyboard mapping)} xywh {243 428 84 16} box THIN_UP_BOX labelfont 1 labelsize 10 } } Fl_Group {} { xywh {108 2 140 45} box ENGRAVED_FRAME } { Fl_Counter anotecounter { label {"A" Note} callback { /*if (microtonal->getnotefreq(o->value(),0)<0.0) o->textcolor(FL_RED); else o->textcolor(FL_BLACK);*/ o->redraw();} tooltip {The "A" note (the reference note for which freq. ("A" freq) is given)} xywh {173 17 65 20} labelfont 1 labelsize 10 align 129 minimum 0 maximum 127 step 1 value 69 textfont 1 textsize 10 code0 {o->lstep(12);} code1 {o->init("PAnote");} class Fl_Osc_Counter } Fl_Value_Input afreqinput { label {"A" Freq.} tooltip {The freq. of "A" note (default=440.0)} xywh {118 17 45 20} labelfont 1 labelsize 10 align 1 minimum 1 maximum 20000 step 0.001 value 440 textfont 1 textsize 10 code0 {o->init("PAfreq");} class Fl_Osc_Value } } Fl_Button {} { label Close callback {microtonaluiwindow->hide();} xywh {333 413 67 28} box THIN_UP_BOX } Fl_Check_Button {} { label {Enable Microtonal} callback {if (o->value()==0) microtonalgroup->deactivate(); else microtonalgroup->activate();} xywh {3 3 102 45} box UP_BOX down_box DOWN_BOX labelfont 1 labelsize 11 align 148 code0 {o->init("Penabled");} class Fl_Osc_Check } } } Function {updateTuningsInput()} {} { code {char *tmpbuf=new char[100]; /* tuningsinput->cut(0,tuningsinput->maximum_size()); for (int i=0;igetoctavesize();i++){ if (i!=0) tuningsinput->insert("\\n"); microtonal->tuningtoline(i,tmpbuf,100); tuningsinput->insert(tmpbuf); }; */ delete []tmpbuf;} {} } Function {updateMappingInput()} {} { code {char *tmpbuf=new char[100]; /* mappinginput->cut(0,tuningsinput->maximum_size()); for (int i=0;iPmapsize;i++){ if (i!=0) mappinginput->insert("\\n"); if ((microtonal->Pmapping[i])==-1) snprintf(tmpbuf,100,"x"); else snprintf(tmpbuf,100,"%d",microtonal->Pmapping[i]); mappinginput->insert(tmpbuf); }; */ delete []tmpbuf;} {} } Function {MicrotonalUI(Fl_Osc_Interface *osc, std::string base)} {} { code {make_window(osc, base);} {} } Function {~MicrotonalUI()} {} { code {microtonaluiwindow->hide(); delete(microtonaluiwindow);} {} } Function {show()} {} { code {microtonaluiwindow->show();} {} } Function {apply()} {} { code {/*int err=microtonal->texttotunings(tuningsinput->value()); if (err>=0) fl_alert("Parse Error: The input may contain only numbers (like 232.59)\\n or divisions (like 121/64)."); if (err==-2) fl_alert("Parse Error: The input is empty."); octavesizeoutput->do_callback(); microtonal->texttomapping(mappinginput->value()); mapsizeoutput->do_callback(); anotecounter->do_callback(); */ //applybutton->color(FL_GRAY);} {} } }