1 # data file for the FLTK User Interface Designer (FLUID)
4 do_not_include_H_from_C
11 Epichord - a midi sequencer
12 Copyright (C) 2008 Evan Rinehart
14 This program is free software; you can redistribute it and/or
15 modify it under the terms of the GNU General Public License
16 as published by the Free Software Foundation; either version 2
17 of the License, or (at your option) any later version.
19 This program is distributed in the hope that it will be useful,
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 GNU General Public License for more details.
24 You should have received a copy of the GNU General Public License
25 along with this program; if not, write to
27 The Free Software Foundation, Inc.
28 51 Franklin Street, Fifth Floor
29 Boston, MA 02110-1301, USA
32 decl {\#include <fltk/events.h>} {}
34 decl {\#include <fltk/file_chooser.h>} {}
36 decl {\#include "backend.h"} {}
38 decl {\#include "util.h"} {}
40 decl {\#include "uihelper.h"} {}
42 decl {\#include "config.h"} {}
44 decl {extern UI* ui;} {}
50 {fltk::Window} main_window {
52 callback {config_window->hide();
54 action_window->hide();
57 xywh {507 27 640 480} resizable
58 extra_code {\#include <unistd.h>
61 \#include "trackmodule.h"
62 o->size_range(640,455);
63 o->resize(640,455);} visible
66 xywh {0 0 640 445} resizable
68 {fltk::Group} song_edit {
71 {fltk::Group} {} {open
72 xywh {0 0 255 445} box FLAT_BOX
74 {fltk::Widget} track_info {
76 xywh {0 15 255 415} resizable
77 extra_code {\#include "trackinfo.h"}
82 callback {ui->track_info->toggle_controls();}
86 {fltk::Group} {} {open
89 {fltk::Widget} song_timeline {
91 xywh {0 0 370 15} resizable
92 extra_code {o->scale=16;
97 {fltk::ScrollGroup} song_scroll {
98 xywh {255 15 385 430} resizable
99 extra_code {o->type(fltk::ScrollGroup::BOTH_ALWAYS);}
101 {fltk::Widget} arranger {
103 xywh {0 0 245 220} box FLAT_BOX
104 extra_code {\#include "seq.h"
105 \#include "arranger.h"
106 o->resize(1000,30*16);}
111 {fltk::Group} pattern_edit {
112 xywh {0 0 640 445} hide
114 {fltk::Group} {} {open
115 xywh {45 0 595 445} resizable
117 {fltk::Group} {} {open
120 {fltk::Widget} pattern_timeline {
122 xywh {0 0 580 15} resizable box FLAT_BOX
123 extra_code {\#include "timeline.h"
128 {fltk::ScrollGroup} pattern_scroll {
129 xywh {0 15 595 355} when CHANGED resizable box FLAT_BOX shortcut 0xff1b
130 extra_code {o->type(fltk::ScrollGroup::BOTH_ALWAYS);}
132 {fltk::Widget} piano_roll {
134 xywh {0 0 595 355} resizable box FLAT_BOX
135 extra_code {\#include "pianoroll.h"
140 {fltk::Group} {} {open
143 {fltk::Widget} event_edit {
145 xywh {0 0 580 75} resizable box FLAT_BOX
146 extra_code {\#include "eventedit.h"}
151 tooltip {pick event type}
172 {fltk::Group} {} {open
173 xywh {0 0 45 445} horizontal
179 {fltk::Group} {} {open
180 xywh {0 15 45 340} resizable
182 {fltk::Widget} track_select {
185 extra_code {\#include "trackselect.h"}
188 {fltk::Widget} sample_view {
191 extra_code {\#include "sampleview.h"}
194 {fltk::Widget} keyboard {
197 extra_code {\#include "keyboard.h"}
203 callback {ui->pattern_edit->hide();
204 ui->pattern_buttons->hide();
205 ui->song_edit->activate();
206 ui->song_edit->show();
207 ui->song_edit->take_focus();
208 ui->song_buttons->show();}
214 {fltk::Group} {} {open
215 xywh {0 445 640 35} box UP_BOX
217 {fltk::Button} play_button {
219 callback {press_play();}
220 xywh {5 5 25 25} labelcolor 0x800000
222 {fltk::Button} stop_button {
224 callback {press_stop();}
225 xywh {35 5 25 25} labelcolor 0x800000
227 {fltk::Button} record_button {
229 callback {toggle_backend_recording();}
230 xywh {65 5 25 25} labelcolor 0xff000000
231 extra_code {o->type(fltk::Button::TOGGLE);}
233 {fltk::Widget} metronome {
238 xywh {180 0 20 35} resizable
240 {fltk::Group} pattern_buttons {
241 xywh {250 5 205 25} hide
243 {fltk::Button} qbutton4 {
244 callback {set_quant(4);}
246 extra_code {o->type(fltk::Button::TOGGLE);}
248 {fltk::Button} qbutton8 {
249 callback {set_quant(8);}
251 extra_code {o->type(fltk::Button::TOGGLE);}
253 {fltk::Button} qbutton16 {
254 callback {set_quant(16);}
256 extra_code {o->type(fltk::Button::TOGGLE);
259 {fltk::Button} qbutton32 {
260 callback {set_quant(32);}
262 extra_code {o->type(fltk::Button::TOGGLE);}
264 {fltk::Button} qbutton64 {
265 callback {set_quant(64);}
267 extra_code {o->type(fltk::Button::TOGGLE);}
269 {fltk::Button} qbutton128 {
270 callback {set_quant(128);}
272 extra_code {o->type(fltk::Button::TOGGLE);}
274 {fltk::Button} qbutton0 {
275 callback {set_quant(0);}
277 extra_code {o->type(fltk::Button::TOGGLE);}
279 {fltk::Button} quant_button {
281 tooltip {quantize selected notes}
285 {fltk::Group} song_buttons {
288 {fltk::Button} color_toggle {
289 callback {arranger->color_flag = o->state();}
292 extra_code {o->type(fltk::Button::TOGGLE);}
294 {fltk::Button} unclone_button {
296 tooltip {unclone selected block}
299 {fltk::Button} join_button {
301 tooltip {join selected blocks}
304 {fltk::Button} split_button {
306 tooltip {split selected block}
310 {fltk::Button} loop_toggle {
311 callback {toggle_loop();}
312 tooltip {toggle looping}
314 extra_code {o->type(fltk::Button::TOGGLE);}
316 {fltk::Button} config_button {
318 callback {ui->config_window->show();}
319 tooltip configuration
322 {fltk::Button} scope_button {
323 callback {ui->scope_window->show();}
327 {fltk::Button} file_button {
328 callback {//load(fltk::file_chooser("save file",NULL,"~"));
329 ui->action_window->show();}
332 extra_code {\#include "saveload.h"}
334 {fltk::Button} help_button {
335 callback {help_window->show();}
341 {fltk::Window} config_window {
343 xywh {66 237 320 285} hide
345 {fltk::TabGroup} {} {open
350 xywh {145 15 170 265} horizontal
352 {fltk::ValueInput} beats_per_measure {
353 label {beats per measure}
354 callback {set_beats_per_measure((int)o->value());}
355 xywh {5 5 45 20} minimum 2 maximum 31 step 1 value 4
357 {fltk::ValueInput} {} {
358 label {measures per phrase}
359 callback {set_measures_per_phrase((int)o->value());}
360 xywh {5 30 45 20} maximum 128 step 1 value 4
362 {fltk::ValueOutput} bpm_output {
364 xywh {5 55 45 20} minimum 1 maximum 1000 step 1 value 120
366 {fltk::ThumbWheel} bpm_wheel {
367 callback {set_bpm((int)o->value());
368 ui->bpm_output->value(o->value());}
369 xywh {55 55 105 20} align 4 minimum 1 maximum 1000 step 1 value 120
371 {fltk::ValueInput} mur {
372 label {measures until record}
373 callback {set_mur((int)o->value());}
374 xywh {5 80 45 20} maximum 128 step 1 value 1
376 {fltk::CheckButton} check_alwayscopy {
377 label {always hard copy}
378 callback {set_alwayscopy(o->value());}
379 tooltip {instead of making a linked clone when you copy a block in the song view.}
380 xywh {5 105 25 25} align 4
382 {fltk::CheckButton} check_autotrackname {
383 label {auto track name}
384 callback {set_autotrackname(o->value());}
385 tooltip {Fill in GM instruments for track names when you change the program.}
386 xywh {145 105 25 25} align 4
388 {fltk::CheckButton} check_passthru {
389 label {record pass-thru}
390 callback {set_passthru(o->value());}
391 tooltip {Echo midi input to midi output.}
392 xywh {5 130 25 26} horizontal align 4 value 1
394 {fltk::CheckButton} check_playinsert {
395 label {play note insertion}
396 callback {set_playinsert(o->value());}
397 tooltip {Send midi note on when you create notes.}
398 xywh {145 130 25 26} horizontal align 4 value 1
400 {fltk::CheckButton} check_recordonchan {
401 label {record on channel}
402 callback {set_recordonchan(o->value());}
403 tooltip {Record on first track that matches channel of midi input instead of selected track.}
404 xywh {5 155 25 25} align 4
406 {fltk::CheckButton} check_playmove {
407 label {play note move}
408 callback {set_playmove(o->value());}
409 tooltip {Send midi note on when you move notes.}
410 xywh {145 155 25 26} horizontal align 4 value 1
412 {fltk::CheckButton} check_follow {
413 label {follow playback}
414 callback {set_follow(o->value());}
415 tooltip {Auto scroll horizontally when play head leaves viewing area.}
416 xywh {5 179 25 26} horizontal align 4 value 1
418 {fltk::CheckButton} check_quantizedur {
419 label {quantize note off}
420 callback {set_quantizedur(o->value());}
421 tooltip {Quantize the length of notes when using the quantizer.}
422 xywh {145 180 25 25} align 4 value 1
425 label {record mode} open
430 callback {set_recordmode(0);}
434 callback {set_recordmode(1);}
438 callback {set_recordmode(2);}
442 label {record outside block} open
447 callback {set_robmode(0);}
451 callback {set_robmode(1);}
455 callback {set_robmode(2);}
461 xywh {0 15 320 270} hide
465 xywh {35 5 45 15} align 4
470 xywh {35 20 45 15} align 4
475 xywh {35 35 45 15} align 4
480 xywh {35 50 45 15} align 4
485 xywh {35 65 45 15} align 4
490 xywh {35 80 45 15} align 4
495 xywh {35 95 45 15} align 4
500 xywh {35 110 45 15} align 4
505 xywh {35 125 45 15} align 4
510 xywh {35 140 45 15} align 4
515 xywh {35 155 45 15} align 4
520 xywh {35 170 45 15} align 4
525 xywh {35 185 45 15} align 4
530 xywh {35 200 45 15} align 4
535 xywh {35 215 45 15} align 4
540 xywh {35 230 45 15} align 4
545 xywh {35 245 45 15} align 4
550 xywh {130 5 45 15} align 4
555 xywh {130 20 45 15} align 4
560 xywh {130 35 45 15} align 4
565 xywh {130 50 45 15} align 4
570 xywh {130 65 45 15} align 4
575 xywh {130 80 45 15} align 4
580 xywh {130 95 45 15} align 4
585 xywh {130 110 45 15} align 4
590 xywh {130 125 45 15} align 4
595 xywh {130 140 45 15} align 4
600 xywh {130 155 45 15} align 4
605 xywh {130 170 45 15} align 4
610 xywh {130 185 45 15} align 4
615 xywh {130 200 45 15} align 4
620 xywh {130 215 45 15} align 4
625 xywh {130 230 45 15} align 4
630 xywh {130 245 45 15} align 4
635 xywh {265 5 45 15} align 4
640 xywh {265 20 45 15} align 4
645 xywh {265 35 45 15} align 4
650 xywh {265 50 45 15} align 4
656 {fltk::Window} help_window {
658 xywh {519 345 580 370} hide resizable
659 extra_code {o->size_range(580,370);}
661 {fltk::TabGroup} {} {open
666 xywh {0 25 580 345} resizable
668 {fltk::Input} title_text {
672 {fltk::Input} author_text {
676 {fltk::TextEditor} info_text {
677 xywh {5 55 570 285} resizable textfont 4
682 xywh {0 25 580 345} hide
684 {fltk::TextDisplay} {} {
685 xywh {5 5 570 335} resizable textfont 4
686 extra_code {load_text(o,ROOT_DATA_DIR"doc/controls.txt");}
691 xywh {0 25 580 345} hide
693 {fltk::TextDisplay} {} {
694 xywh {5 5 570 335} resizable textfont 4
695 extra_code {load_text(o,ROOT_DATA_DIR"doc/guide.txt");}
700 xywh {0 25 580 345} hide
702 {fltk::TextDisplay} {} {
703 xywh {5 5 570 335} resizable textfont 4
704 extra_code {load_text(o,ROOT_DATA_DIR"doc/license.txt");}
709 xywh {0 25 580 345} hide
711 {fltk::TextDisplay} {} {
712 xywh {5 5 570 335} resizable textfont 4
713 extra_code {load_text(o,ROOT_DATA_DIR"doc/README");}
718 {fltk::Window} action_window {
720 xywh {286 302 100 130} horizontal hide
726 track_info->update();
727 action_window->hide();}
732 callback {action_window->hide();
738 callback {action_window->hide();
739 save(fltk::file_chooser("save file",NULL,get_last_dir()));}
744 callback {action_window->hide();
745 load(fltk::file_chooser("open file",NULL,get_last_dir()));}
754 callback {action_window->hide();
755 savesmf(fltk::file_chooser("export file",NULL,get_last_dir()));}
759 {fltk::Window} scope_window {
761 xywh {647 310 425 280} hide resizable
763 {fltk::TextDisplay} scope {
764 xywh {5 5 415 245} textfont 4 color 0x280000 textcolor 0xff0000
765 extra_code {o->wrap_mode(1);}
770 extra_code {o->type(fltk::Button::TOGGLE);}
773 code {loop_toggle->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/loop.gif"));
774 color_toggle->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/color.gif"));
775 scope_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/conf.gif"));
776 file_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/file.gif"));
777 help_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/help.gif"));
779 qbutton4->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q4.gif"));
780 qbutton8->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q8.gif"));
781 qbutton16->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q16.gif"));
782 qbutton32->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q32.gif"));
783 qbutton64->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q64.gif"));
784 qbutton128->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q128.gif"));
785 qbutton0->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q0.gif"));} {}
786 code {track_info->set_rec(0);} {}
787 code {config_init();} {}
788 code {main_window->show();} {}